是否可以有一个具有以下属性的同步camel-activemq队列(例如MY_queue):
- MY_QUEUE将其输入发送到EXT_QUEUE.REQ(直接)
- 从EXT_QUEUE.RES生成MY_QUEUE的响应(不确定如何!)
以及从EXT_QUEUE.RES填充MY_QUEUE的响应体,其中MY_QUEUE.EXT_QUEUE-REQ和EXT_QUEUE.RES都是活动mq队列。
例如MY_QUEUE--->EXT_QUEUE.REQ
如果是,我该如何进行配置?
谢谢!
我想你想要的是一条沿着这条线的路线:
<route>
<from uri="activemq:queue:MY_QUEUE?exchangePattern=InOut"/>
<bean ref="myConverter" method="prepExternalCall"/>
<enrich uri="activemq:queue:EXT_QUEUE.REQ?replyTo=EXT_QUEUE.REQ.RES&replyToType=Shared"/>
<bean ref="myConverter" method="postProcessResponse"/>
</route>
在方法postProcessResponse(Exchange ex)
返回后,如果发送方已设置了对目的地的JMS回复,则将交换发送回MY_QUEUE(由查询参数exchangePattern=InOut
强制执行)。处理是同步的,因为只有在发送了对当前消息的响应之后,才从MY_QUEUE接收下一个消息。