我正在使用
MessageProducerSupport messageProducer =
Jms.messageDriverChannelAdapter(jmsConnectionFactory, TransactedMessageListenerContainer.class)
.destination(queue)
.get();
使用来自ActiveMQ队列的消息。
这是我的IntegrationFlow
的第一部分,然后在事务中发生多个阶段(转换,路由,句柄..)
它是处理来自上游的消息
为了从Spring集成管道获取ACK,我使用了Jms.inboundGateway(jmsConnectionFactory, TransactedMessageListenerContainer.class)
,这不会破坏现有的流程并且一切正常
当我设置上游消息的replyTo
标头时,我会假设Spring Integration会将IntegrationFlow
的最后一个阶段的对象发送回replyTo
队列
我的方法是否正确? 是否有可能实现这样的用例?
答案 0 :(得分:0)
是的,这是正确的,应该通过它的(Messaging Gateway)前提。
Jms.inboundGateway()
基于ChannelPublishingJmsMessageListener
和expectReply = true
,并且有一个代码:
private Destination getReplyDestination(javax.jms.Message request, Session session) throws JMSException {
Destination replyTo = request.getJMSReplyTo();
....
return replyTo;
}
从请求中获取replyTo
。
如果流程中的最后一个MessageHandler
是AbstractReplyProducingMessageHandler
,并且真正从标题中返回要生成replyChannel
的内容,那么一切运作良好。
如果您对自己的情况不确定,请分享您的流程结束以及您希望发送回复的地方。