【问题标题】:MassTransit/RabbitMq Error queue - how to delete messages?MassTransit/RabbitMq 错误队列 - 如何删除消息?
【发布时间】:2020-09-22 10:43:17
【问题描述】:

我有一个队列 {QueueName}。 我定义了一个消费者和错误消息消费者如下:

                        cfg.ReceiveEndpoint
                        (
                            queueName: QueueName,
                            e =>
                            {
                                 e.UseMessageRetry(r => r.Immediate(2));

                                e.AutoDelete = false;
                                e.Durable = true;
                                e.Consumer(() => container.Resolve<My_Consumer>());
                                e.Consumer(() => container.Resolve<My_Fault_Consumer>());
                            }
                        );
                    

当消费者处理完消息的尝试次数后,故障消息消费者会启动并通过记录错误来处理消息。 我注意到创建了额外的队列,名为 {QueueName}_error。

My_Fault_Consumer 不确认故障消息消耗,队列增长。

如何确认这些消息?

【问题讨论】:

  • e.AutoDelete = true; 也许?
  • 但我没有明确定义该队列...

标签: c# rabbitmq masstransit


【解决方案1】:

error 队列是毒队列,或 invalid message channel

Fault&lt;T&gt; 消息的消费者使用此队列。 Fault 消息作为任何其他消息发布。如果您查看毒物队列的内容,您将不会在其中看到任何 Fault 消息,因为它打算保留您的消费者未能消费的 原始 消息。

这里的目的是您能够查看这些消息并最终决定将它们移回原始队列以进行重新处理,或者仅评估这些消息的内容以进行故障排除。

MassTransit 对该队列不做任何事情,也不会从那里删除消息。您可以通过 UI 或使用管理 API 或您的代理自行完成。

【讨论】:

    猜你喜欢
    • 2013-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-20
    • 2015-12-20
    • 1970-01-01
    • 1970-01-01
    • 2020-05-02
    相关资源
    最近更新 更多