MQ连接 - 2009错误

时间:2010-06-01 16:23:00

标签: connection ibm-mq

将MQ与下面的代码连接起来。我能够成功连接到MQ。我的情况是我每隔1分钟将消息发送到MQ。断开电缆后,我得到一个ResonCode错误,但IsConnected属性仍然显示为true。这是检查连接是否仍然连接的正确方法吗?或者那里有最好的实践。

我想在应用程序启动时打开连接,保持打开状态。

public static MQQueueManager ConnectMQ() {

if((queueManager == null)||(!queueManager.IsConnected)||(queueManager.ReasonCode == 2009)) { queueManager = new MQQueueManager(); } return queueManager; }

1 个答案:

答案 0 :(得分:2)

WMQ客户端连接的行为是,当空闲时,它似乎将连接,直到API调用失败或连接超时。所以isConnected()可能会报告为真,直到尝试获取,放置或查询调用并失败,此时QMgr将报告断开连接。

此处要考虑的另一件事是,2009年不是您可能获得的唯一代码。它恰好是连接断开时获得的连接代码,但是有关于QMgr关闭,通道关闭以及各种资源和其他错误的连接代码。

通常,对于维持常量连接的要求,您需要将连接和消息处理循环包装在嵌套在while语句中的try / catch块中。当您捕获除故意退出之外的异常时,关闭对象和QMgr,至少休眠5秒钟,然后循环到顶部。睡眠是至关重要的,因为如果你陷入紧密的重新连接循环并在QMgr上投入数百次连接尝试,你甚至可以将主机QMgr带到膝盖上。

另一种方法是使用v7 WMQ客户端和QMgr。通过这种组合,自动重新连接可配置为通道配置。