【问题标题】:Rabbitmq move message to different queue if processing fails如果处理失败,Rabbitmq 将消息移动到不同的队列
【发布时间】:2017-07-25 18:35:42
【问题描述】:

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

的形式发回一个 ack
channel.BasicAck(ea.DeliveryTag, false);

这将把它从队列中取出。如果我遇到反序列化问题,我想将消息移至“错误队列”

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

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

【问题讨论】:

  • 死信交换是您问题的解决方案。

标签: c# .net rabbitmq amqp


【解决方案1】:

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

以下是 RabbitMQ .NET 3.6.10 客户端中拒绝或取消消息的功能:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-16
    • 1970-01-01
    • 2018-07-28
    相关资源
    最近更新 更多