代码之家  ›  专栏  ›  技术社区  ›  RLe

如何检查MQ是否已连接

  •  2
  • RLe  · 技术社区  · 7 年前

    我正在尝试连接到MQ服务器。我有2个MQ服务器:服务器1和服务器2,并将其设置为 connectionNameList 对于 mqConnectionFactory . 如果服务器2出现故障,MQ是否有办法连接到服务器1?如何知道MQ服务器是否已连接?我看到有 clientReconnectOptions 设置为 67108864 但我不确定那是什么。

    1 回复  |  直到 7 年前
        1
  •  1
  •   JoshMc    6 年前

    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);
    

    请注意,客户端不会总是尝试重新连接,请参阅 endmqm Linux手册页:

    如果发出endmqm来停止队列管理器,则可重新连接的客户端会 不要尝试重新连接。要重写此行为,请指定-r 或-s选项,使客户端开始尝试重新连接。

    注意:如果队列管理器或通道意外结束,则可以重新连接 客户端开始尝试重新连接。