集群主题

可以将主题按集群队列的相似方式分群,不过单个主题对象只能是一个集群的成员。 通过在主题对象上定义用于托管该主题的集群名称以及用于该主题发布的集群路由机制,可以使该主题成为集群主题。

提供两个选项用于在发布/预订集群中路由发布:直接路由主题主机路由。 要选择在集群中使用的消息路由,请将受管主题对象上的 CLROUTE 属性设置为以下值之一:
  • DIRECT
  • TOPICHOST

缺省情况下,主题路由为 DIRECT。 这是 IBM® MQ 8.0之前的唯一选项。 当在队列管理器上配置直接路由集群主题时,集群中的所有队列管理器都可识别集群中的所有其他队列管理器。 执行发布和预订操作时,每个队列管理器便会直接连接到所有其他队列管理器。

IBM MQ 8.0 开始,您可以改为将主题路由配置为 TOPICHOST。 使用主题主机路由时,集群中的所有队列管理器都可识别用于托管路由主题定义的集群队列管理器。 在执行发布和预订操作时,集群中的队列管理器只会连接到这些主题主机队列管理器,而不会彼此直接连接。 主题主机队列管理器负责将发布从执行发布的队列管理器路由至具有匹配预订的队列管理器。

主题主机路由发布/预订集群提供了以下优势:
  • 已改善更大集群的可扩展性。 只有主题主机队列管理器需要能够连接到集群中的所有其他队列管理器。 因此,队列管理器之间存在较少的通道,队列管理器间的发布/预订管理流量比用于直接路由的少。 在队列管理器上进行预订更改时,只需要通知主题主机队列管理器。
  • 对物理配置进行更多控制。 对于直接路由,所有队列管理器采用所有角色,因此全都需要同等能力。 对于主题主机路由,您可显式选择主题主机队列管理器。 因此,您可以确保这些队列管理器在合适的设备上运行,并且可以将功能差一些的系统用于其他队列管理器。

定义本地主题和集群主题的影响

如果您希望连接至队列管理器的发布者应用程序仅发布至本地连接的订户,可定义本地主题对象。 主题的本地定义始终会覆盖远程队列管理器上的任何集群主题定义。

注: 您还需要在本地主题对象上指定 队列管理器发布作用域 。 如果发布范围解析为全部,那么还会将发布至此队列管理器上定义的主题的发布发送至远程订户。

直接路由集群中的多个集群主题定义

在直接路由集群中,通常不会在多个集群队列管理器上定义集群主题。 这是因为直接路由可使主题可用于集群中的所有队列管理器。

同样,唯一的主机队列管理器也无需持续可用,因为完整存储库队列管理器会高速缓存集群主题定义,并且所有其他队列管理器也会将集群主题定义高速缓存到其局部集群存储库中。 通过这种高速缓存机制,可以在主机队列管理器不可用的情况下至少 60 天内可以使用集群主题定义。

如果您需要更改集群主题定义,请在定义该集群主题定义的队列管理器上谨慎进行修改。

主题主机路由集群中的多个集群主题定义

在主题主机路由集群中,所有发布/预订消息传递均通过主题主机进行路由。 因此,要确保可伸缩性和可用性,通常要在多个队列管理器上定义集群主题,并使多个集群主题定义完全相同。