【问题标题】:Masstransit one fault consumer for all fault messageMasstransit 所有故障信息的故障消费者
【发布时间】:2018-04-17 19:35:57
【问题描述】:

如何拥有一个处理所有故障消息的通用消费者?

我是否需要为我的每条故障消息注册故障消费者?

【问题讨论】:

    标签: masstransit


    【解决方案1】:

    为什么不消费Fault

    public class WantAllFaultsGimmeThem : IConsumer<Fault>
    {
        public async Task Consume(ConsumeContext<Fault> context)
        {
            // whatever you want to do here
        }
    }
    

    唯一的问题是Message 不是这个接口的一部分,因此它甚至不会被反序列化。因此您将无法访问消息,只能访问消息 ID。

    【讨论】:

    • 如果我为我的每个 ReceiveEndpoint 注册 WantAllFaultsGimmeThem,我会收到重复的故障,现在我为一个 ReceiveEndpoint 注册 juste 并配置另一个...,解决方案很好
    • 如果您确实想稍后获得实际的故障信息,您可以使用consumeContext.TryGetMessage&lt;Fault&lt;T&gt;&gt;(out var faultContext),如果它存在,您可以将其取回。
    • 所有故障都发布到总线,而不是端点。如果您在多个端点中有多个相同消息类型的消费者 - 他们都会得到它,只是通常的 pub-sub。
    • 但我只希望我的应用程序出现故障,而不是总线上的所有故障......我只希望在重试过程结束后记录异常
    • 你有足够的故障细节来确定它来自哪里。另外,如果您只想记录日志,自定义中间件可能会更好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多