我正在使用RabbitMq .net和消息确认。如果消费者能够处理消息,我们可以以
的形式发回一个确认channel.BasicAck(ea.DeliveryTag, false);
将把它从队列中取出。如果我遇到反序列化问题,我想将消息移到“错误队列”
var message = JsonConvert.DeserializeObject<object>(json);
我尝试过使用“x-dead-letter-exchange”,但这取决于“x-message-ttl”时间设置。我只想在处理失败时将消息移动到错误队列。如何实现这种功能?我在网上找不到任何帮助。
答案 0 :(得分:2)
如果您的消费者使用basic.reject
或basic.nack
并requeue
标志设置为false
拒绝该消息,RabbitMQ会将该消息重新发布到死信交换。这是documented in the article about dead-letter exchanges。
以下是在RabbitMQ .NET 3.6.10客户端中拒绝或禁止消息的功能: