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

标签 c# rabbitmq masstransit

我有一个队列 {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 不确认故障消息消耗并且队列增长。

如何确认这些消息?

最佳答案

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

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

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

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

关于c# - MassTransit/RabbitMq 错误队列 - 如何删除消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64008063/

相关文章:

docker - RabbitMQ、.NET Core 和 Kubernetes(配置)

c# - MassTransit 和简易喷油器

c# - 有关在 .NET 中使用消息队列服务总线的问题

使用 lambda 表达式的 C# 二次排序

c# - 插入数据库的日期变为 0000

java - 关键的 RabbitMQ 方法参数

c# - Masstransit 使用RabbitMQ 性能很慢?

c# - 检查电子邮件地址是否存在

c# - 通用线性分段查找表

java - Rabbitmq 死信交换不起作用,导致无限重试