scala dsl에서 기본 구현을 검사 한 결과 기본값으로 DefaultMessageListenerContainer를 내부적으로 사용하는 jms:inbound-gateway
(메시지 기반 채널 어댑터 아님)을 만드는 것으로 나타났습니다. 그래서 네, 그것은 메시지 기반의 컨테이너 내부적으로 게이트웨이 구성 요소를 사용하는 것으로 보이기 때문에 요청/응답 유형의 흐름이 있습니다. 이것은 폴링 대신 1 초 지연으로 볼 수 있습니다.
lazy val subscribeChannel = {
val c = new SubscribableJmsChannel(jmsContainer, jmsTemplate)
c.afterPropertiesSet()
c.subscribe(new MessageHandler {
def handleMessage(message: Message[_]) {processMessage(message)}
})
c
}
subscribeChannel.start()
processMessage를 (메시지) 내 처리 기능이다
및
lazy val jmsContainer= {
val c = new DefaultMessageListenerContainer
c.setConnectionFactory(connectionFactory)
c.setDestination(dest)
c.setPubSubDomain(true)
c.afterPropertiesSet()
c
}
, SubscribableJmsChannel는 JMS를 매핑하지 않음을 유의하시기 바랍니다 :
네, 저도 발견했습니다. 그것을 pub-sub로 만들 수있는 방법이 있습니까? – nau
나는 MessageListener를 사용하기로 전락했고 JMS TextMessage를 Spring 통합 메시지로 변환해야한다. 그렇게 할 수있는 간단한 방법이 있습니까? – nau
변환을 수행하기 위해 실제로 아무 것도 할 필요가 없습니다. - 스프링 통합은 JMS의 메시지를 내부 스프링 통합 메시지 구조에 자동으로 매핑합니다. –