RabbitMQ异步处理消息时处理异常的最佳实践

时间:2018-11-14 02:14:44

标签: rabbitmq

注册了Rabbitmq消息的异步使用者。 尚未获得有关如何在异步使用者操作中处理流程异常的官方建议吗?
可能需要重试队列消息/将消息重新发布到具有重试次数限制的队列中。

1 个答案:

答案 0 :(得分:0)

从RabbitMq的队列中消费时,可以设置一个名为noAck的选项,该选项可以为true或false。

  • true会在无法处理的错误中确认一条消息
  • false将自动删除邮件,并将其保留在 排队待稍后拉。

(这取决于您为消费者使用的语言。noAck = nodejs,autoAck = c#等)

consumer.consume(q.queue, function (message) {
    // your code
}, {noAck: false});

关于设置重试次数,我必须自己通过在要传递的消息的标头中传递重试计数来做到这一点,并且必须在将具有修改后的标头的新版本发送回给我之前确认我正在阅读的消息。队列。我使用了多个队列来维护消息的完整性,但是可以使用一个队列来完成。

我希望这会有所帮助。