RabbitMQ重试机制

RabbitMQ retrying mechanism

我正在使用 rabbitMQ,我使用 basic_get 从队列中获取每条消息,而没有自动确认程序,这意味着消息将保留在队列中,直到我确认或取消消息。

有时我会收到一些无法处理的消息,因为抛出了一些异常,这阻止了它们被完全处理。

在这些情况下,我想再试一次让我立即说两次,如果结果我仍然无法处理它们 - 我想在一小时内再试 3 次,如果全部失败,那么我想取消消息并将其从队列中永久删除。

问题是 rabbitMQ 中是否有任何机制为我提供消息重试(也计算重试次数),以及选择何时启动重试的能力 - 某种推迟机制?

你应该为此使用多个队列。

我遇到了类似的问题,我处理这个问题的方法是将遇到问题的邮件移到另一个队列中。

如果抛出异常,则捕获它,确认消息并将其移至比方说 error_queue_1。您可以设置第二个侦听器(使用不同的计时器),他将处理 error_queue_1.

您可以根据需要多次重复该过程。

这还可以让您了解有多少邮件有问题,哪一条等。