如何自动连接IBM MQ客户机
本文关键字:MQ 客户机 IBM 连接 何自动 | 更新日期: 2023-09-27 18:07:33
我正在使用MQ。MQ 7x客户机的。NET类,并且导入和导出消息工作正常。但是,如果网络断开连接或远程管理器断开连接,IBM MQ客户机不会自动重新连接。我:
Error: Remote host ' not available, retry later.
当这些问题发生时,是否有一种方法可以自动连接并继续处理消息?有一个属性用于检查队列管理器的连接:
mqQMgr = new MQQueueManager("My queue manager name" ,"my channel name",",my connection name");
mqQMgr.IsConnected
返回真/假,但这无助于自动连接。
这是我使用的:
// 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
我在上面的
行得到这个错误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
从v7.1起MQ c#客户端支持自动客户端重新连接。您必须使用MQCNO_RECONNECT
或MQCNO_RECONNECT_Q_MGR
或MQCNO_RECONNECT_AS_DEF
CNO选项来启用自动重新连接。MQ v7.1提供了几个示例,SimpleClientAutoReconnectPut.cs就是其中之一。详情请以样品为准。
简单的片段。
mqQMgr = new MQQueueManager("QM", MQC.MQCNO_RECONNECT,"SVRCONNCHN","localhost(1414)");
我已经用了一段时间了,但是有自动重新连接的选项:这里你可以读到更多,尽管它是Java定制的,但c#包装器中也有这些选项:IBM MQ:自动客户端重新连接
一个好的模式是在你写消息之前检查它是否已连接&连接:
if (!mqQMgr.IsConnected) {
mqQMgr.Connect();
}
mqQMgr.Write(message);
我不知道那是否对你有帮助。好运!