NServiceBus 异常记录为 INFO 消息

NServiceBus exceptions logged as INFO messages

我是 运行 Azure Workerrole 上的 NServiceBus 端点。我现在将所有诊断信息发送到 table 存储。我在我的 DLQ 中收到消息,但我不明白为什么我的 table 存储中没有记录任何异常。

事实证明,NSB 将异常记录为 INFO,这就是为什么我无法轻易地在所有实际的详细日志记录之间发现它们。

在我的例子中,无法解析命令处理程序的依赖项,因此 Autofac 抛出异常。我完全明白为什么抛出异常,我只是不明白为什么它们被记录为 INFO。消息最终出现在我的 DLQ 中,我只有一个信息跟踪来理解原因。

在 NSB 中以这种方式处理异常是否有原因?

NServiceBus 没有将容器问题记录为错误,因为它发生在尝试处理消息的过程中。将尝试一级重试和二级重试。执行 SLR 时,它会记录有关重试的 WARN。最终,一条消息将无法处理并记录一条 ERROR 消息。 NSB and Autofac sample 可用于重现。

当端点是 运行 扩展角色并且 MadDeliveryCount is not big enough to accommodate all the role instances and retry count that each instance would hold, this will result in DeliveryCount reaching it's max while NServiceBus endpoint instance still thinks it has attempts before sending message to an error queue and logging an error. Similar to the 我建议增加 MaxDeliveryCount

有一个开放的 NServiceBus issue 可以原生支持 SLR 计数器。您可以为问题添加您的声音。下一版本的 NServiceBus (V6) 将记录消息 ID 以及异常,这样您至少可以将 DLQ 中的消息与日志文件关联起来。