【问题标题】:NServiceBus Message Handlers and RetriesNServiceBus 消息处理程序和重试
【发布时间】:2019-01-31 18:26:17
【问题描述】:

NServiceBus 有以下问题。 在NServicebus 中出现异常后,我登录到 Application Insights。 如果错误不是暂时的,则每次重试都会重复日志,直到消息进入错误队列。

处理程序中有一种方法可以识别我是在第一次迭代中还是在一次重试中而不实现自定义代码?

我已经看到有一个全球通知系统,但我需要在Handler level 获得它。

【问题讨论】:

    标签: nservicebus


    【解决方案1】:

    您可以检查邮件标题。

    public Task Handle(MyMessage message, IMessageHandlerContext context) { var numberImmediateRetries = context.MessageHeaders[NServiceBus.Headers.ImmediateRetries]; var numberDelayedRetries = context.MessageHeaders[NServiceBus.Headers.DelayedRetries]; }

    【讨论】:

    • 嗨,我已经尝试过这个解决方案,但是在我的项目中,即时重试标头始终为空,只有延迟重试标头在消息被延迟重试时不是空的。我正在使用 NServicebus 6。也许我在配置 Endpoint 时遗漏了什么?
    • 无法通过标头跟踪立即重试,因为传输通常会回滚失败的消息并从传输中重新读取它。这种方法不允许修改消息的标题。到目前为止,实际上不可能知道在从传输接收此信息的可恢复性策略之外发生了多少次立即重试。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-15
    • 2016-03-21
    • 1970-01-01
    相关资源
    最近更新 更多