在我的应用程序(Spring 集成)与 IBM-MQ - 高可用性之间实现连接
Implement a connection between my application (Spring integration) with IBM-MQ - High Availability
我正在尝试实现我的应用程序(Spring 集成)与 IBM-MQ 之间的连接,我确实看到了问题 ,但在我的情况下,每个主机都有不同的 "queueManager" 和 "channels",这意味着我必须具有如下配置,但是 queueManager 和 channels 属性支持字符串而不是列表值:
<bean id="connectionFactory" class="com.ibm.mq.jms.MQQueueConnectionFactory">
<property name="connectionNameList" value="host1(6464),host1(6464)" />
<property name="clientReconnectTimeout" value="15000" />
<property name="transportType" value="1" />
<property name="queueManager" value="QM1, QM1," />
<property name="channel" value="channel1,channel1"/>
</bean>
最简单的方法是在两台主机上定义一个同名的通道,让客户端先尝试 host1,然后使用 connectionNameList
尝试 host2。在此设置中,它总是更喜欢 host1。您需要指定一个空白的 queueManager
,以便客户端将接受它连接到的队列管理器。示例如下:
<property name="queueManager" value="" />
Morag 在您 post 您 link 的评论中指出的另一个选项是使用 CCDT(客户端通道定义 table)。
见Using a client channel definition table with IBM WebSphere MQ classes for JMS. The property name is CCDTURL
CCDT 可以有多个 CLNTCONN
通道条目,不同通道名称都具有相同的 QMNAME,这称为 Queue Manager Group,然后您将指定 queueManager
属性 作为 *QMNAME
,这将允许应用程序连接到您被定向到的任何队列管理器,而不考虑实际的队列管理器名称。我提供的 link 底部列出了 CLNTCONN 的其他参数,它们可以帮助您控制一个队列管理器是否优于其他队列管理器,以及如果重新连接要连接到哪个队列管理器是必需的。
我正在尝试实现我的应用程序(Spring 集成)与 IBM-MQ 之间的连接,我确实看到了问题
<bean id="connectionFactory" class="com.ibm.mq.jms.MQQueueConnectionFactory">
<property name="connectionNameList" value="host1(6464),host1(6464)" />
<property name="clientReconnectTimeout" value="15000" />
<property name="transportType" value="1" />
<property name="queueManager" value="QM1, QM1," />
<property name="channel" value="channel1,channel1"/>
</bean>
最简单的方法是在两台主机上定义一个同名的通道,让客户端先尝试 host1,然后使用 connectionNameList
尝试 host2。在此设置中,它总是更喜欢 host1。您需要指定一个空白的 queueManager
,以便客户端将接受它连接到的队列管理器。示例如下:
<property name="queueManager" value="" />
Morag 在您 post 您 link 的评论中指出的另一个选项是使用 CCDT(客户端通道定义 table)。
见Using a client channel definition table with IBM WebSphere MQ classes for JMS. The property name is CCDTURL
CCDT 可以有多个 CLNTCONN
通道条目,不同通道名称都具有相同的 QMNAME,这称为 Queue Manager Group,然后您将指定 queueManager
属性 作为 *QMNAME
,这将允许应用程序连接到您被定向到的任何队列管理器,而不考虑实际的队列管理器名称。我提供的 link 底部列出了 CLNTCONN 的其他参数,它们可以帮助您控制一个队列管理器是否优于其他队列管理器,以及如果重新连接要连接到哪个队列管理器是必需的。