在设计构成
WebSphere Message Broker 代理域的
WebSphere MQ 网络时,请考虑是否要使用集群。
使用队列管理器集群会带来以下巨大好处:
- 减少系统管理
群集对建立网络所需的定义较少;您可以更快更方便地建立和更改您的网络。
- 增加了可用性和工作负载均衡
您可以通过在多个队列管理器上定义同一个队列的实例,从而在集群中分配工作负荷来受益。
如果对集群使用 WebSphere Message Broker,请考虑以下内容:
- 对于 SYSTEM.BROKER 队列:
- 创建 WebSphere Message Broker 组件时,为您定义了 SYSTEM.BROKER 队列,但没有定义为集群队列。请勿更改该属性。
- 对于代理、配置管理器和用户名称服务器连通性:
- 如果对集群定义支持代理、配置管理器和用户名称服务器的队列管理器,可以从 WebSphere MQ 集群所提供的简化管理中得到好处。您会发现这特别适合于集合体中的代理,它们一定都有 WebSphere MQ 之间的连接。
- 对于消息流输入队列:
- 如果将输入队列定义为集群队列,请考虑消息或分段消息的各段的顺序的牵连事项。这些牵连事项与任何 WebSphere MQ 集群队列的牵连事项相同。特别是,应用程序必须确保如果它发送的是分段消息,所有各段都将由同一个目标队列处理,因此是由在相同代理的同一个消息流实例处理的。
- 对于消息流输出队列:
-
- 当 WebSphere Message Broker 为输出而打开队列时,它总是指定 MQOO_BIND_AS_Q_DEF。如果希望将分段的消息放入输出队列,或希望由同一个进程处理一系列消息,必须在定义该队列时指定 DEFBIND(OPEN)。这确保了单个消息的所有各段或一个序列中的所有消息都放入同一个目标队列,并且都由接收应用程序的同一个实例处理。
- 在创建您自己的输出节点的情况下,如果需要保证消息顺序或确保单个目标用于分段消息,请在打开输出队列时指定 MQOO_BIND_AS_Q_DEF,在定义队列时指定 DEFBIND(OPEN)。
- 对于发布/预订:
-
- 如果用于发布的目标队列是一个集群队列,必须将 发布/预订 消息流部署到集群中队列管理器上的所有代理。但是,集群没有为代理域拓扑和功能提供任何故障转移功能。如果向其发布消息的代理或预订注册程序不可用,发布的分发或注册不会被另一个代理接管。
- 当客户机向队列管理器上运行的代理(是集群成员)注册预订时,代理将代理注册转发给它在代理域中的邻居:注册详细信息不会向集群中的其他成员公布。
- 客户机可能选择成为集群订户,从而其订户队列可成为接收任何给定发布的集群队列集之一。在这种情况下,当注册预订时,使用与集群关联的“虚拟”队列管理器名称;这不是发布将发送到的队列管理器,而是代理使用的别名。作为管理活动,会在代理上对空队列管理器进行空队列管理器别名定义,使该预订符合所有的集群订户。当代理发布到命名该队列管理器的订户队列时,解决队列管理器名称的结果是将发布发送到任何保存订户集群队列的队列管理器,且只有一个集群订户接收队列。
例如,如果集群订户队列为 SUBS_QUEUE 而“虚拟”订户队列管理器为 CLUSTER_QM,则代理定义为:
DEFINE QREMOTE(CLUSTER_QM)
RQMNAME(' ') RNAME(' ')
它会将 CLUSTER_QM 上 SUBS_QUEUE 的代理发布发送到集群中任何位置上命名为 SUBS_QUEUE 的一个集群队列实例。
要了解有关集群的更多信息,请参阅 WebSphere MQ Queue
Manager Clusters 一书。