c# - 如果处理失败,Rabbitmq 将消息移动到不同的队列

标签 c# .net rabbitmq amqp

我正在使用 RabbitMq .net 和消息确认。如果消费者能够处理消息,我们可以以

的形式发回确认
channel.BasicAck(ea.DeliveryTag, false);

这会将其从队列中删除。如果我遇到反序列化问题,我想将消息移至“错误队列”

var message = JsonConvert.DeserializeObject<object>(json);

我尝试过使用“x-dead-letter-exchange”,但它取决于“x-message-ttl”时间设置。我只想在处理失败时将消息移至错误队列。如何实现这个功能呢?我在网上找不到任何帮助。

最佳答案

如果您的消费者使用 basic.rejectbasic.nack 拒绝消息,并将 requeue 标志设置为 false,RabbitMQ 会将消息重新发布到死信交换。这是documented in the article about dead-letter exchanges .

以下是 RabbitMQ .NET 3.6.10 客户端中拒绝或 nack 消息的函数:

关于c# - 如果处理失败,Rabbitmq 将消息移动到不同的队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45311133/

相关文章:

c# - 从 sql 查询 C# 填充系列

c# - 从不可变对象(immutable对象)设置拷贝是否可以避免线程损坏?

javascript - 在 JavaScript 中嵌入 C# 代码?

c# - 在 C# COM 项目中,我应该引用 DLL 还是 TLB? (主要是 SolidWorks)

java - RabbitMQ 订阅者超时

java - MySQL、MongoDB、RabbitMQ 的事务原子性

c# - protected 通用类 - 是否受支持?

c# - MySQL 连接器打不开

c# - 异步使用 System.Diagnostics.Process,我应该如何确保在确定它已退出之前收到最后的输出?

unix - 如何设置RabbitMQ目录创建新文件的权限?