【问题标题】:How can I send faulted messages to a specific exchange using MassTransit如何使用 MassTransit 将错误消息发送到特定交易所
【发布时间】:2020-12-04 00:28:59
【问题描述】:

除了 MassTransit 提供的默认值之外,我如何向特定交易所 (DLX) 发送错误消息?我已按如下方式配置了我的 ReceiveEndpoint,但错误消息总是在 _error 队列中结束:

                endpoint.SetQueueArgument("x-dead-letter-exchange", "xxx-sync-exchange.dead");
                endpoint.SetQueueArgument("x-dead-letter-routing-key", "xxx.sync.on-customer-updated-event.dead");
                endpoint.DeadLetterExchange = "xxx-sync-exchange.dead";

感谢您提供的任何帮助,谢谢

【问题讨论】:

    标签: rabbitmq masstransit


    【解决方案1】:

    您可能必须重新配置接收管道以 NACK 消息,而不是默认行为将消息移动到 _error 队列。您将失去 MassTransit 添加的包含故障详细信息的额外异常标头的好处。

    这个可能行得通,我还没试过。

    endpoint.RethrowFaultedMessages();
    

    您仍然需要指定 DeadLetterExchange

    【讨论】:

    • 我认为它没有按预期工作。当消费者内部抛出异常时,它会进入无限循环
    • 是的,我不确定是否设置了 RabbitMQ 来处理这个问题,因为它使用带有 NACK 的重新排队。所以,是的,NACK 消息是不可能的。我只将 DLE 用于过期的 TTL 消息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-11
    • 1970-01-01
    相关资源
    最近更新 更多