我们让 WSO2 ESB 监听单个 ActiveMQ 队列。但是,我们希望在侦听 JMS 队列时配置多个代理。但是我们希望代理只使用为其指定的消息。是否有一种机制可以在 ESB 代理上设置 JMS 消息选择器,以便它只使用为其指定的消息。?
谢谢拉吉夫帕蒂尔
是的,您可以让多个代理服务监听同一个队列,每个服务都遵循某个 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+ 上进行了测试。