代码之家  ›  专栏  ›  技术社区  ›  Chris Nicola

订阅队列时发生NserviceBus msmq错误

  •  0
  • Chris Nicola  · 技术社区  · 14 年前

    这可能是非常明显的,我刚开始使用NSB。我会尽可能的详细。让我们从代码开始:

    以下是端点配置代码: http://www.pastebin.ca/1896246

    以及app.config: http://www.pastebin.ca/1896249

    最后,这里是运行nservicebus.host.exe时要记录的输出 http://www.pastebin.ca/1896253

    奇怪的是,总线仍然工作,可以接收消息并处理它们,正如我在这里看到的: http://www.pastebin.ca/1896257

    我最担心的是我会被重复 System.Messaging.MessageQueueException 主机进程运行时出错:

    请求的操作超时 已经过期

    消息队列错误代码: system.messaging.message队列错误代码.iotimeout

    stacktrace:在 system.messaging.messagequeue.receivecurrent(时间跨度 超时,Int32操作,光标句柄 光标,消息属性筛选器, 消息队列事务 内部交易, 消息队列事务类型 交易类型)

    2 回复  |  直到 14 年前
        1
  •  2
  •   Udi Dahan    14 年前

    您不必担心这些msmq异常,因为它们是nservicebus内部的,被框架吞并了。

        2
  •  1
  •   John Breakwell    14 年前

    从异常情况来看,您似乎正在执行超时接收。如果没有要接收的消息,那么当超时时间到达时,msmq将最终生成异常。如果这是一个预期的场景(即队列中没有消息),您只需捕获异常并继续。如果队列中总是有一条消息,那么我将感兴趣的是光标当时指向的位置。

    干杯
    约翰布鲁克韦尔