如何将 IBM MQ 主题设置为仅在同一应用程序中共享消息

how to set IBM MQ topic to share message only within same applications

这就是我希望通过 IBM MQ 实现的目标:

我有一个主题,并且有 2 个不同的应用程序(A1、A2)订阅了该主题。每个应用程序有 2 个实例,即 (A1-I1,A1-I2,A2-I1,A2-I2)。 当消息 (M1) 发布到主题时,应用程序 A1 和 A2 都会收到该消息。但是在A1中,只有一个实例(A1-I1或A1-I2)可以收到这条消息M1,A2的实例也是如此。

IBM MQ 主题和 JMS 是否可行?

我看过评论中提到的共享订阅,但我发现它(IBM MQ)有一个限制,即共享订阅只能由一个 JVM 访问,即两个应用程序实例无法访问共享订阅同时订阅,所以我放弃了这个纯粹的pub/sub方向

我设法通过让应用程序监听订阅的目标队列而不是直接订阅来使其工作。我在目标队列为 SUB.A1.QUEUE 的队列管理器订阅 SUB.A1 和目标队列为 SUB.A2.QUEUE 的订阅 SUB.A2 中定义。应用程序 A1 的所有实例都将监听 SUB.A1.QUEUE,A2 将监听 SUB.A2.QUEUE。一切都按预期进行。

以上设置是所有应用程序连接到同一个队列管理器。如果有多个 QM 的队列管理器集群,只需将订阅目标队列定义为集群队列,它也可以正常工作