【问题标题】:Matching failed messages to their exceptions in NServiceBus using MSMQ使用 MSMQ 将失败的消息与 NServiceBus 中的异常匹配
【发布时间】:2011-05-02 06:46:23
【问题描述】:

在使用标准 IServer 配置选项通过 MSMQ 设置 NServiceBus 时,您定义:

  • 输入队列
  • 一个错误队列。

当您的 NServiceBus 消息处理程序因任何原因无法处理消息时,它会引发异常并将消息移动到 错误队列

错误队列中的消息与输入队列中的消息完全相同吗?如果是这样,我想是这样,有没有办法知道为什么这些消息失败了?是否有任何附加到它们的元数据可能包含引发的原始异常?

在您的处理程序设置为重试次数大于一的情况下,能够做到这一点特别有用。这是因为即使可能会在 Handler 中抛出致命错误并记录下来,但它们在进入错误队列之前并不是真正的致命错误,因为那是它们实际失败的时候。

有什么想法吗?

干杯

【问题讨论】:

    标签: c# .net error-handling msmq nservicebus


    【解决方案1】:

    这是发送到错误 q 的消息的精确副本。消息 id 和源队列存储在标头中,以使消息能够被重放。在 2.5 中,没有很好的方法来获取失败消息的异常详细信息,因此您必须将消息 ID 与日志文件条目相关联。 NSB 为您重新连接的事实通常会导致同一日志消息多次显示一条消息,因此请确保使用最后一个条目。

    这当然不是非常用户友好,并且已在即将发布的 3.0 中得到修复,您可以在其中注册故障管理器,让您连接到 NSB 以获取此信息。默认的 Failure Manager 会将异常详细信息放在标头中,以便您通过查看失败消息轻松获取它们。

    【讨论】:

    • +1 嗯...这就是我的想法。 3.0 听起来不错,但对 2.5 来说是一种耻辱,尤其是正如你所说的,因为重试。谢谢。
    猜你喜欢
    • 2013-10-10
    • 2013-07-02
    • 1970-01-01
    • 1970-01-01
    • 2019-07-07
    • 2014-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多