gpt4 book ai didi

azure - NServiceBus MessageForwardingInCaseOfFaultConfig 未按预期工作

转载 作者:行者123 更新时间:2023-12-03 05:07:48 25 4
gpt4 key购买 nike

我已设置 NServiceBus 将失败的消息转发到由 ServiceControl 监控的错误队列。

这是我的配置:

 <section name="MessageForwardingInCaseOfFaultConfig" type="NServiceBus.Config.MessageForwardingInCaseOfFaultConfig, NServiceBus.Core" />
<MessageForwardingInCaseOfFaultConfig ErrorQueue="error" />

当我发送一条无法处理的消息时,它会被发送到 DLQ。但是,我在 error 或 error.log 队列中找不到此消息的副本。当我在AMS中查看消息详细信息时,Delivery Counter设置为7,但是当我检查NSB日志时,我只能发现一次异常。另外,我有点困惑为什么这个异常被记录为“INFO”。这使得检测这种方式变得更加困难,但这是一个单独的问题。

注意:我在 Azure 服务总线传输上运行。

有人知道我在这里缺少什么吗?提前致谢!

最佳答案

当处理程序尝试处理消息但失败时,消息将变得可见并将再次重试。如果队列上设置的传递计数较低,则消息将处理失败,并且 ASB 将以 native DLQ 方式处理它。这就是消息最终出现在 ASB DLQ 中而不是 NSB 配置的错误队列中的原因。

您在 DLQ 消息中看到的信息证实了这一点。 default MaxDeliveryCount in NSB.ASB v5 设置为 6,因此当尝试处理超过该值的消息时,ASB 将对您的消息进行 DLQ。

这是因为 NSB 有自己的(每个实例)重试计数器,并且没有使用 ASB 提供的 native DeliveryCount。如果您的端点已横向扩展,则需要调整 MaxDeliveryCount,因为每个角色实例都可以获取消息并尝试处理它。每个实例都会有它的重试计数器。因此,实例计数器可能低于 6,但消息 DeliveryCount 将超过该值。

关于azure - NServiceBus MessageForwardingInCaseOfFaultConfig 未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36303008/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com