在设置MQQueueConnectionFactory
我们初始化它,如下所示:每个主机/端口是否允许有多个队列管理器?
MQQueueConnectionFactory factory = new MQQueueConnectionFactory();
factory.setQueueManager(queueManager);
factory.setTransportType(CommonConstants.WMQ_CM_CLIENT);
factory.setHostName(host);
factory.setPort(port);
factory.setChannel(channel);
特别是我们设置的队列管理器的名称。从这种模式看来,队列管理器名称对于完全识别队列管理器来说是必需的。有人可能会得出结论:在同一个主机和端口上,不同的队列管理器可能会听。这可能吗?
然而,设置the connection name list时指定重新连接的目标有必要的任何队列管理器名称:
public void setConnectionNameList(java.lang.String hosts) throws javax.jms.JMSException
指定客户端将尝试重新连接到它的连接断开后,主机。连接名称列表是以逗号分隔的主机/ IP端口对列表。例如。 (1414),host2.example.com(1400)此属性的默认设置为'localhost(1414)'null或空字符串表示本地主机(1414)
设置在client reconnect options两个选项似乎在这方面很重要:
- WMQ_CLIENT_RECONNECT - 重新连接到任何连接名称列表
- WMQ_CLIENT_RECONNECT_Q_MGR指定的队列管理器 - 重新连接到我们原本相同的队列管理连接到。如果它尝试连接的队列管理器(在连接名称列表中指定)具有与最初连接到的队列管理器不同的QMID,则会抛出MQRC_RECONNECT_QMID_MISMATCH。
这些单证制作尚不清楚,如果在同一台主机/端口后面多个队列管理器是可能的。将此与Oracle可以由同一个侦听器提供多个服务的情况相比较。
我们有两个队列管理器在具有不同名称的不同主机/端口上侦听。我们希望将这些队列管理器之一用作连接名称列表中的故障转移管理器。问题是:队列管理器是否仅由主机和端口唯一标识?
感谢您的投票并接受。请注意稍后进行的更新,并指向相关文档链接。 CCDT组主要是通用的QMgr名称,因此即使不使用也很好理解。 –