如何在WSO2 ESB中侦听多个队列

时间:2015-09-28 07:21:57

标签: jms wso2 activemq esb amqp

我正在创建一个托管系统,其中多个客户可以发送消息。我在JMS队列上收到了消息。

现在,所有处理都以类似的方式完成,我希望我的进程轮询所有传入的队列以获取消息并处理它们。 WSO2 ESB中有没有办法订阅多个队列?

如果不可能,解决方法是为每个队列创建一个单独的侦听器进程,并将此消息发布到中央处理队列。但这似乎是一个不那么干净的解决方案(而且我认为它会比收听多个队列更糟糕)。

有关于此的任何想法吗?

2 个答案:

答案 0 :(得分:1)

如果可以更改activeMQ服务器,即。如果OP能够影响服务器的配置,那么像ActiveMQ转移这样的东西可以解决问题。

<divert name="prices-divert">
   <address>jms.queue.ABC</address>
   <forwarding-address>jms.queue.theone</forwarding-address>
   <exclusive>true</exclusive>
</divert>

<divert name="prices-divert">
   <address>jms.queue.xyz</address>
   <forwarding-address>jms.queue.theone</forwarding-address>
   <exclusive>true</exclusive>
</divert>

基本上,多个转移将来自多个队列的消息聚合到单个队列。这种方法优于读取和写入单个队列 - 如OP所提到的那样,并且在我看来可以很好地扩展,因为它是内置功能。

答案 1 :(得分:0)

您可以定义包含所有必需逻辑的序列,然后从多个代理服务(每个侦听特定队列)中调用它。否则,您可以尝试类似于this sample的内容。