【问题标题】:MQ Connection - 2009 errorMQ 连接 - 2009 错误
【发布时间】:2010-06-01 16:22:59
【问题描述】:

我正在使用以下代码连接 MQ。我能够成功连接到 MQ。我的情况是我每 1 分钟将消息发送到 MQ 一次。断开电缆后,我收到 ResonCode 错误,但 IsConnected 属性仍然显示为 true。这是检查连接是否仍然连接的正确方法吗?或者有任何最佳实践。

我想在应用程序启动时打开连接,让它永远打开。

公共静态 MQQueueManager ConnectMQ() {

如果 ((queueManager == null) || (!queueManager.IsConnected)||(queueManager.ReasonCode == 2009)) { queueManager = new MQQueueManager(); } 返回队列管理器; }

【问题讨论】:

    标签: connection ibm-mq


    【解决方案1】:

    WMQ 客户端连接的行为是,当空闲时,它会显示为已连接,直到 API 调用失败或连接超时。因此,isConnected() 可能会报告 true,直到尝试调用 get、put 或查询但失败,此时 QMgr 将报告断开连接。

    这里要考虑的另一件事是,2009 并不是您可能获得的唯一代码。它恰好是您在连接被切断时得到的,但是有 QMgr 关闭、通道关闭以及各种资源和其他错误的连接代码。

    通常,对于保持恒定连接的要求,您可能希望将连接和消息处理循环包装在嵌套在 while 语句中的 try/catch 块中。当您捕获除有意退出之外的异常时,关闭对象和 QMgr,至少休眠 5 秒,然后循环到 while 的顶部。睡眠至关重要,因为如果您陷入紧密的重新连接循环并在 QMgr 上进行数百次连接尝试,您甚至可以让大型机 QMgr 陷入瘫痪。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-19
      • 2017-02-03
      • 2020-01-12
      相关资源
      最近更新 更多