IBM MQ 队列 JMS 侦听器按主机名或某个 ID 接收消息



是否可以将多个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 中有详细讨论。