是否可以将多个JMS侦听器连接到MQ队列,并且侦听器根据Id(可能是主机名)获取消息。
在发送消息(设置此 ID?)和订阅时,我们可以使用此 ID 设置订阅者。代理的另一端将处理消息,并在响应时设置此 ID,以便特定侦听器将处理响应。
每个消息上的 MessageId/CorrId 将以发送/接收模式工作,但这不是我在这里看到的,因为我使用的是 msg 侦听器。
浏览了 IBM MQ 文档,但无法弄清楚这一点。请提供任何文档参考/代码示例来解决此问题。
您可以使用"选择器"创建javax.jms.MessageConsumer
,例如,使用javax.jms.Session.createConsumer(Destination, String)
,然后当您在此使用者上设置javax.jms.MessageListener
实现时,它将仅接收属性值与该选择器匹配的消息。
因此,您可以在发送消息时在消息上设置一个名为color
的属性,然后您的使用者可以使用像color = 'red'
这样的选择器。使用者只会收到其color
属性为值red
的消息。
消息选择器(包括语法和匹配语义)在 JavaDoc 中有详细讨论。