如何自动连接IBM MQ客户端?

Sha*_*500 4 .net c# ibm-mq

我正在使用MQ 7x客户端的MQ.NET类,导入和导出消息工作正常.但是,如果网络断开连接或远程管理器已断开连接,则IBM MQ客户端不会自动重新连接.我明白了:

Error: Remote host ' not available, retry later.   
Run Code Online (Sandbox Code Playgroud)

当出现这类问题时,有没有办法自动连接并继续处理消息?

有一个属性可以检查队列管理器的连接:

mqQMgr = new MQQueueManager("My queue manager name" ,"my channel name",",my connection name");
Run Code Online (Sandbox Code Playgroud)

mqQMgr.IsConnected 返回true/false,但这对自动连接没有帮助.

这就是我正在使用的:

   // mq properties
    Hashtable properties = new Hashtable();
    properties.Add(MQC.TRANSPORT_PROPERTY, MQC.TRANSPORT_MQSERIES_MANAGED);            
    properties.Add(MQC.CONNECTION_NAME_PROPERTY, "connectionName");            
    properties.Add(MQC.CHANNEL_PROPERTY, "channelName");
    properties.Add(MQC.CONNECT_OPTIONS_PROPERTY, MQC.MQCNO_RECONNECT_Q_MGR);

    mqQMgr = new MQQueueManager("my queue manager"), properties); //error thrown
Run Code Online (Sandbox Code Playgroud)

我在上面的行中得到了这个错误

IBM MQException caught in send message - reason code - 2046- message -CompCode: 2, Reason: 2046
{"MQRC_OPTIONS_ERROR"}
base {System.ApplicationException}:
{"MQRC_OPTIONS_ERROR"}
CompCode: 2
CompletionCode: 2
Message: "MQRC_OPTIONS_ERROR"
Reason: 2046
Run Code Online (Sandbox Code Playgroud)

Sha*_*shi 5

从v7.1开始,MQ C#客户端支持自动客户端重新连接.你必须使用MQCNO_RECONNECTMQCNO_RECONNECT_Q_MGRMQCNO_RECONNECT_AS_DEFCNO选项来启用自动重新连接.MQ v7.1提供了几个样本,SimpleClientAutoReconnectPut.cs就是其中之一.有关详细信息,请参阅示例.

简单的片段.

mqQMgr = new MQQueueManager("QM", MQC.MQCNO_RECONNECT,"SVRCONNCHN","localhost(1414)");
Run Code Online (Sandbox Code Playgroud)