Ibm mq IBM MQ中的集群发布/订阅是否涉及使用集群通道来传递消息?

Ibm mq IBM MQ中的集群发布/订阅是否涉及使用集群通道来传递消息?,ibm-mq,publish-subscribe,Ibm Mq,Publish Subscribe,其原理是,在集群主题中发布时,消息的副本通过订阅对象传递给订阅该主题的所有队列管理器 这是一个纯粹的理论问题: 消息副本是否通过群集通道传递到目标队列管理器?群集通道是否用于此目的 如果回答为“否”,那么哪种机制可以将发布副本从源位置传递到目标位置?简短的回答是“是”,如果发布服务器不是进行订阅的队列管理器的本地,IBM MQ将使用群集通道传递发布到群集主题的消息 较长的答案是,对于IBM MQ v7.0/7.1/7.5,如果发布发生在向该主题注册代理订阅的所有队列管理器上,则始终直接从队列管

其原理是,在集群主题中发布时,消息的副本通过订阅对象传递给订阅该主题的所有队列管理器

这是一个纯粹的理论问题: 消息副本是否通过群集通道传递到目标队列管理器?群集通道是否用于此目的


如果回答为“否”,那么哪种机制可以将发布副本从源位置传递到目标位置?

简短的回答是“是”,如果发布服务器不是进行订阅的队列管理器的本地,IBM MQ将使用群集通道传递发布到群集主题的消息


较长的答案是,对于IBM MQ v7.0/7.1/7.5,如果发布发生在向该主题注册代理订阅的所有队列管理器上,则始终直接从队列管理器进行传递

问题是集群中的每个队列管理器都需要了解集群中的每个其他队列管理器以及集群中任何集群主题的每个订户。在大型集群中,即使只有两个队列管理器参与集群发布/订阅,集群中的每个队列管理器都需要了解其他每个队列管理器和订阅

当您第一次在PR(部分存储库)队列管理器上对主题进行群集时,它将通知FRs(完整存储库)有关新主题的信息,然后他们将此信息发送给群集中的每个PR队列管理器,以及有关如何连接到群集中每个其他PR的信息。如果集群中有1000个PR队列管理器,这意味着每个PR现在都知道999个其他PR

此外,当您向任何PR上的群集主题添加订阅时,该PR将连接到每个其他PR,并告诉它设置代理订阅,这意味着PR将启动999个CLUSSDR频道来传播此代理订阅

在该信息初始传播之后,如果只有两个PRs使用发布/订阅,例如,发布者应用程序发布到PR1上的主题,订阅者应用程序订阅到PR2上的主题,除了关于该主题的群集更新之外,PR1和PR2之间将只进行通信

这与集群队列行为不同。当您首次使用PR队列管理器对队列进行集群时,它将通知FRs(完整存储库)有关该队列的信息。此时,FRs无需通知其他PRs(他们如何通知其他FRs)。如果您想将其放入另一个PR上的群集队列,如果PR不知道队列,它将转到FR查看队列是否存在,如果知道,FR将向PR发送关于队列的信息。然后FR知道PR对该对象感兴趣,并且对集群队列的任何进一步更新仅发送给感兴趣的PR。如果应用程序继续放入集群队列以保持兴趣,PRs也会定期让FR知道他们仍然感兴趣,但如果应用程序停止使用队列,PR最终将不会表示兴趣,FR将停止向该PR发送更新


在mqv8中,IBM为集群添加了路由发布/订阅,最初的发布/订阅现在称为直接发布/订阅

现在,您可以使用新属性
CLROUTE
更改集群主题的行为,该属性可以设置为
DIRECT
,这是默认值,与MQ v8之前的情况一样,也可以通过将其设置为
TOPICHOST
来获得新行为

我所说的第一部分保持不变,集群中的每个PR都将从FR处获得关于新集群主题的更新,但他们将只了解您在集群中的所有其他队列管理器上定义主题的一个PR

对主题进行订阅时,进行订阅的PR将仅连接到使用
CLROUTE(TOPICHOST)
定义了群集主题的PR,而不是连接到所有其他PR以创建代理订阅。如果在任何PR上向主题发布消息,则该PR将仅向TopiHost发送消息,TopiHost随后将消息发送给通知其代理订阅的其他PR。(请注意,您可以而且应该有多个TOPICHOST用于冗余,但我没有详细介绍这些细节)



IBM MQ L2支持部门的Angel Rivera介绍了关于此主题的网络广播,非常好,您可以在此处访问音频的PDF和MP3:。

先生,您让我开心。非常感谢你给了我最完整的答案。很高兴我能帮上忙。也谢谢你,我一直想回顾一下新的主题主持人功能,你的问题给了我这样做的理由和动力