有没有办法让 MassTransit 仅在出错时放弃消息而不是转发到错误 queue/deadletter

Is there a way to have MassTransit just abandon messages on error rather than forward to an error queue/deadletter

我正在尝试在基于 Azure 服务总线的非常可靠的基于消息的系统中使用 MassTransit。 当发生消息处理错误时,MassTransit 会将消息移至 error/fault 队列。 我知道我可以对消费者政策进行重试,而且我做到了。我想要配置的是让 MassTransit 尝试处理消息,如果发生错误,则放弃消息,以便它返回到订阅的前端以供另一个订阅者接收。

我正在尝试将其与自定义断路器结合使用,该断路器会在发生处理错误时立即断开。

这将增加服务总线上的交付计数并最终可能导致死信,但我们已经有非基于公共交通的方法来处理这个问题。

那么有没有一种方法可以禁用所有错误队列功能并仅放弃消息?

您可以配置接收端点:

cfg.ThrowOnSkippedMessages();
cfg.RethrowFaultedMessages();

这会将错误传播回服务总线(订阅或队列)并让 MaxDeliveryCount 最终决定它是否在 DLQ 中结束。