2012-06-06 3 views
1

현재 게이트웨이를 통해 스프링 통합 채널을 사용하고 있으며 매우 이상하고 성가신 행동을 보입니다. 메시지는 보낸 후 매우 늦게 (1 분 이상) 처리됩니다.동기식 게이트웨이를 만들 수 있습니까?

채널은 자체 스레드 풀로 비동기 적으로 처리되기 때문에 이러한 스레드는 단순히 활성화되지 않았을 것입니다. 이 메시지의 전송은 현재 스레드에서 동 기적으로 메시지 처리를 강제하고 싶습니다.

이 가능합니까?

나의 현재 설정 :

<int:annotation-config /> 
<task:executor id="integrationPool" pool-size="0-100" /> 
<int:poller default="true" task-executor="integrationPool" fixed-rate="50" /> 

<int:channel id="loggableevents"> 
    <int:queue /> 
</int:channel> 
<int:channel id="outgoingevents"> 
    <int:queue /> 
    <int:interceptors> 
     <int:wire-tap channel="loggableevents" /> 
    </int:interceptors> 
</int:channel> 

<int:outbound-channel-adapter channel="outgoingevents" method="handleMessage" ref="momadapter" /> 
<bean id="momadapter" class="my.project.mom.EventSendingMessageHandler" /> 

<!-- Logging --> 
<int:outbound-channel-adapter channel="loggableevents" ref="loggingadapter" method="handleMessage" /> 
<bean id="loggingadapter" class="my.project.logging.EventLoggingHandler" /> 

<int:gateway id="eventgateway" service-interface="my.project.mom.EventGateway" default-request-channel="outgoingevents" /> 

내가 직접 채널에 액세스하기 위해 더 나은 것, 편의를 위해 게이트웨이를 사용?

답변

0

이 답변을 얻을하고 인터페이스 기반의 게이트웨이를 사용하는 경우. 메시지 채널을 사용하는 것은 필수입니다. 이 경우의 해결책은 직접 채널을 사용하는 것입니다. 다음 코드 샘플은 java DSL을 사용하여이를 수행하는 방법을 보여줍니다.

@Bean(name = "spa.import.zipcodes") 
public MessageChannel queueRecordsChannel() { 
    return MessageChannels.direct().get(); 
} 

확인 DirectChannel에 대한 자세한 내용은이 페이지 : http://docs.spring.io/spring-integration/reference/html/messaging-channels-section.html

관련 문제