我正在使用 RabbitMq .net 和消息确认。如果消费者能够处理消息,我们可以以
的形式发回确认channel.BasicAck(ea.DeliveryTag, false);
这会将其从队列中删除。如果我遇到反序列化问题,我想将消息移至“错误队列”
var message = JsonConvert.DeserializeObject<object>(json);
我尝试过使用“x-dead-letter-exchange”,但它取决于“x-message-ttl”时间设置。我只想在处理失败时将消息移至错误队列。如何实现这个功能呢?我在网上找不到任何帮助。
最佳答案
如果您的消费者使用 basic.reject
或 basic.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/