从Camel中的异步队列生成响应

时间:2014-04-14 02:03:21

标签: jms apache-camel activemq

是否可以使用具有以下属性的同步camel activemq队列(例如MY_QUEUE):

  1. MY_QUEUE将其输入发送到EXT_QUEUE.REQ(直截了当)
  2. 从EXT_QUEUE.RES生成MY_QUEUE的响应(不知道如何!)
  3. 并从EXT_QUEUE.RES填充MY_QUEUE的响应正文,其中MY_QUEUE,EXT_QUEUE.REQ和EXT_QUEUE.RES都是activemq队列。

    E.g。 MY_QUEUE ---> EXT_QUEUE.REQ

    如果是这样,我该如何配置呢?

    谢谢!

1 个答案:

答案 0 :(得分:0)

我认为你想要的是沿着这条路走的路线:

<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&amp;replyToType=Shared"/>
    <bean ref="myConverter" method="postProcessResponse"/>
</route>

方法postProcessResponse(Exchange ex)返回后,如果发件人设置了JMS reploy-to destination,则交换将被发送回MY_QUEUE(由查询参数exchangePattern=InOut强制执行)。处理是同步的,因为只有在发送了对当前消息的响应后才从MY_QUEUE中获取下一条消息。