【问题标题】:Testing Whether a Remote MessageQueue Exists (using C#)测试远程消息队列是否存在(使用 C#)
【发布时间】:2010-11-03 20:47:54
【问题描述】:

如何判断远程消息队列exists是否存在?文档指出“Exists”方法不适用于远程机器。

以下内容无效(我知道队列路径是准确的,因为我能够向队列发送消息):

if (!MessageQueue.Exists(@"FormatName:Direct=TCP:192.168.2.58\Private$\MyQueue")) throw new InvalidOperationException("队列不存在");

问题在于,将消息发送到后面没有侦听队列的网络地址不会导致异常。为无效队列地址引发异常对我们的应用程序至关重要。

【问题讨论】:

    标签: c# msmq


    【解决方案1】:

    有一篇关于这个的文章:

    Frank 的替代方法是利用其他功能 MSMQ 提供,例如否定确认消息 管理队列。

    应该发生的是:

    • 消息将成功传递到目标队列
    • 一个否定确认 (NACK) 将返回给 具有“目标队列不 存在。”(MQMSG_CLASS_NACK_BAD_DST_Q)或者你可以使用 负面来源日志,并且在未能交付时,应该看到 对应的“死信消息”系统中的同一类 NACK 排队。

    总之,不要检查队列是否存在,而是处理 如果发现队列没有传递消息,则未传递消息 存在。

    http://blogs.msdn.com/johnbreakwell/archive/2008/07/31/checking-if-msmq-queues-exist-is-hard-work-so-should-you-bother.aspx

    【讨论】:

      【解决方案2】:

      如果遥控器 Q 被第三方控制,而您没有任何控制权怎么办?

      您最好进行某种超时检查,而不是依赖远程信息。

      【讨论】:

        猜你喜欢
        • 2014-06-18
        • 2020-04-18
        • 2013-03-02
        • 2012-05-13
        • 1970-01-01
        • 2013-02-03
        • 2013-01-22
        • 2023-04-08
        • 2011-05-23
        相关资源
        最近更新 更多