发布/预订和多个集群

单个队列管理器可以是多个集群的成员。 此排列有时称为 重叠集群。 通过这种重叠,可以从多个集群访问集群队列,并且可以将点到点消息流量从一个集群中的队列管理器路由到另一个集群中的队列管理器。 发布/预订集群中的集群主题不提供相同的功能。 因此,在使用多个集群时,必须清楚地了解它们的行为。

与队列不同,不能将主题定义与多个集群相关联。 集群主题的作用域仅限于为其定义主题的同一集群中的那些队列管理器。 这允许将发布仅传播到同一集群中的那些队列管理器上的预订。

队列管理器的主题树

图 1。 重叠集群: 两个集群各预订不同的主题
一对重叠的集群。 CLUSTER 1 具有队列管理器 QM1, QM2, QM3和预订主题 T B。 CLUSTER 2 具有队列管理器 QM3, QM4, QM5和预订主题 T C。 CLUSTER $TAG1 和 CLUSTER 2 的重叠包含 QM3。

当队列管理器是多个集群的成员时,将使其了解其中每个集群中定义的所有集群主题。 例如,在上图中, QM3 同时识别 T B 和 T C 受管集群主题对象,而 QM1 仅识别 T B。 QM3 将这两个主题定义应用于其本地主题,因此对于某些主题具有不同的行为 QM1 。 因此,来自不同集群的集群主题不相互干扰非常重要。 当一个集群主题在另一个集群中的另一个集群主题 (例如,它们的主题字符串为 /Sport/Sport/Football) 的上方或下方定义时,可能会发生干扰,甚至对于这两个集群中的同一主题字符串也会发生干扰。 另一种干扰形式是在不同集群中使用相同的对象名定义受管集群主题对象,但针对不同的主题字符串。

如果进行了这样的配置,那么将发布传递到匹配的预订将非常依赖于发布者和订户相对于集群的相对位置。 因此,您不能依赖此类配置,您应该对其进行更改以除去干扰主题。

使用发布/预订消息传递来规划重叠集群拓扑时,可以通过将主题树和集群主题对象名称视为跨拓扑中所有重叠集群来避免任何干扰。

集成多个发布/预订集群

如果需要发布/预订消息传递以跨不同集群中的队列管理器,那么有两个选项可用:
  • 通过使用发布/预订层次结构配置将集群连接在一起。 请参阅 组合多个集群的主题空间
  • 创建覆盖现有集群的其他集群,并包含需要发布或预订特定主题的所有队列管理器。
使用后一个选项时,您应该仔细考虑集群的大小以及最有效的集群路由机制。 SeeDesigning发布/订阅集群