MassTransit/RabbitMq 错误队列 - 如何删除消息?

use*_*063 2 c# masstransit rabbitmq

我有一个队列 {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>());
                            }
                        );
                    
Run Code Online (Sandbox Code Playgroud)

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

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

如何确认这些消息?

Ale*_*rev 5

error队列是毒队列,或者是无效的消息通道

Fault<T>消息的使用者使用该队列。这些Fault消息与任何其他消息一样发布。如果您查看有害队列的内容,您将不会Fault在那里看到任何消息,因为它打算保留您的消费者未能消费的原始消息。

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

MassTransit 对该队列不执行任何操作,也不会从那里删除消息。您可以通过 UI 或使用管理 API 或您的经纪商自行完成此操作。