我正在尝试连接到我的MQ服务器。我有2个MQ服务器:服务器1和服务器2,并为ach = wb.macro('AddCommentHook')
ach('Sheet1!A1', 'test 123')
将其设置为connectionNameList
。如果服务器2出现故障,MQ是否有办法连接到服务器1?如何知道MQ服务器是否已连接?我看到mqConnectionFactory
设置为clientReconnectOptions
,但我不确定是什么。
答案 0 :(得分:1)
ClientReconnectOptions的可能设置记录在IBM MQ知识中心页面CLIENTRECONNECTOPTIONS
中下面是使用setClientReconnectOptions
进行设置的示例,以便应用程序可以重新连接到connectionNameList
中设置的两个主机(端口)组合上的任何队列管理器列表。
MQQueueConnectionFactory factory = new MQQueueConnectionFactory();
factory.setQueueManager("QMNAME");
factory.setChannel("SVRCONN.CHL");
factory.setConnectionNameList("hostName1(port),hostName2(port)");
factory.setClientReconnectOptions( WMQConstants.WMQ_CLIENT_RECONNECT );
// Set the amount of time you will attempt to reconnect in seconds
factory.setClientReconnectTimeout( 43200 ); //12 hours
//default is 1800 seconds
//factory.setClientReconnectTimeout(WMQConstants.WMQ_CLIENT_RECONNECT_TIMEOUT_DEFAULT);
请注意,客户端不会总是尝试重新连接,请参阅Linux上的endmqm
手册页中的以下内容:
如果您发出endmqm来停止队列管理器,那么可重新连接的客户端会这样做 不要试图重新连接。要覆盖此行为,请指定-r 或-s选项以使客户端能够开始尝试重新连接。
注意:如果队列管理器或通道意外终止,则可重新连接 客户开始尝试重新连接。