0

我们让 WSO2 ESB 监听单个 ActiveMQ 队列。但是,我们希望在侦听 JMS 队列时配置多个代理。但是我们希望代理只使用为其指定的消息。是否有一种机制可以在 ESB 代理上设置 JMS 消息选择器,以便它只使用为其指定的消息。?

谢谢拉吉夫帕蒂尔

4

2 回答 2

0

AFAIK 不可能执行这样的选择。然而,有两种可能的方法来实现上述目标。

  1. 让每个代理读取所有消息并选择要在代理内部处理的消息
  2. 使用EIP 模式来实现上述目的。一种可能的模式是消息路由,您可以在其中选择消息并将消息定向到将执行处理的所需序列或代理。
于 2013-08-13T08:39:03.617 回答
0

是的,您可以让多个代理服务监听同一个队列,每个服务都遵循某个 JMS MessageSelector。您必须transport.jms.MessageSelector像这样为每个代理设置参数(值 100 是可变的,每个代理服务包含不同的数字):

<parameter name="transport.jms.MessageSelector">account='100'</parameter>

将消息发送到 JMS 代理的 Java 消息生产者将消息选择器设置为:

// this will set a key/value pair as JMS message selector
// 100 should be a variable in your case
message.setStringProperty("account", "100");

这在 ActiveMQ 4.7 和 WSO2 ESB 4+ 上进行了测试。

于 2013-12-06T23:28:46.600 回答