好的,作为一种解决方法,我手动创建 SubscribableJmsChannel:
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(message) 是我的处理函数,并且
lazy val jmsContainer= {
val c = new DefaultMessageListenerContainer
c.setConnectionFactory(connectionFactory)
c.setDestination(dest)
c.setPubSubDomain(true)
c.afterPropertiesSet()
c
}
请注意,SubscribableJmsChannel 不会将 JMS 属性映射到 SI 消息头!我不得不回退到使用 Spring Integration XML 流定义。