【问题标题】:How to receive notification when IBM Queue Manager gets disconnected?IBM Queue Manager 断开连接时如何接收通知?
【发布时间】:2009-11-19 09:15:00
【问题描述】:

我们目前正在构建一个需要与一些 IBM WebSphere 队列通信的应用程序。在队列的另一端有另一个世界。由于一些未知的情况(对我来说),每次连接到 MQQueueManager 需要 17 秒,但是之后通过队列发送和接收消息并不是一项耗时的工作。由于我们现在在 WebSphere 前面放置了一个 Web 服务,所以我们想出了装饰和缓存 MQQueueManager 和 MQQueue 的想法,并在每次发送消息之前验证它们是否连接,分别打开;如果没有,我们尝试连接到 MQQueueManager,分别打开 MQQueue(再一次,连接到 MQQueueManager 需要 17 秒,打开 MQQueue 是“即时”的)。因此,我们预计 WebSphere 每隔一段时间就会断开 MQQueueManager(我无法确定,因为我们目前无法对此进行大量测试,但我们应该谨慎),并且不幸的调用程序将等待 17 秒重新连接。就目前的情况来看,我们无法预测这件事会发生。 我们当前的实现使用 .NET 的 WebSphere MQ 类。当 MQQueueManager 断开连接或关联队列关闭时,我们是否有可能收到回调通知?

【问题讨论】:

    标签: c# .net windows-services ibm-mq


    【解决方案1】:

    是的!如果您使用最新的 WMQ .Net 类和最新的IA9H SupportPac,您将获得一个异步回调方法。 (这带有 .Net 示例代码,展示了如何注册和使用回调。)据我了解,此方法将在回调例程可用时向您的回调例程传递一条消息,或者如果连接正常,则将异常传递给注册的异常侦听器丢失或队列设置为GET(DISABLED)

    获取最新的 WMQ 客户端here。查找名称如 MQC* 的 SupportPacs。 v8.0客户端为MQC8,v9客户端为MQC9等

    如果您有旧版本的 .Net WMQ 类并且由于某种原因无法升级,您可以始终保持单独的线程打开并定期轮询队列。不过,不要太频繁地轮询。在过去,我看到人们使用类变量作为倒数计时器。每次成功检索消息或将消息放入队列时,计时器都会重置为其最大值。当计时器达到零时,轮询队列。这样,您只有在连接上没有其他流量时才轮询队列。

    【讨论】:

    • 非常感谢!这就是我要找的东西!
    • 它说找不到文件。这不是免费的,还是我应该使用我的公司凭据?
    • 有人可以提供代码示例吗?我没有在网上找到任何 .NET 类的内容。
    • SupportPac 站点似乎已关闭。我无法从 Google 或我的书签中找到它。我已经报告了停电。与此同时,SupportPacs 的登陆页面在这里:www-01.ibm.com/support/docview.wss?rs=171&uid=swg27007197#1我可以从这里看到 IA9H,但目前所有链接都已失效。
    • 下载 IA9H 时,安装的“工具”子目录中会提供示例。 Roger 在capitalware.biz 有一些样品,但我认为它们不是最新的。不过值得一看。至少在 SupportPac 网站重新上线之前。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-19
    • 2013-10-26
    • 2022-01-09
    • 1970-01-01
    • 1970-01-01
    • 2010-10-20
    • 1970-01-01
    相关资源
    最近更新 更多