RabbitMQ重试机制


RabbitMQ retrying mechanism

我使用的是rabbitMQ,我使用basic_get从队列中获取每条消息,而无需自动确认过程,这意味着消息将保留在队列中,直到我确认或确认消息。

有时,由于抛出了一些异常,导致无法完全处理消息。

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

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

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

我遇到了类似的问题,我处理该问题的方法是将遇到问题的消息移动到另一个队列中。

如果抛出了异常,那么捕获它,确认消息并将其移动到error_queue_1中。您可以设置第二个侦听器(使用不同的计时器),该侦听器将处理error_queue_1。

你可以根据自己的需要多次重复这个过程。

这也将使您了解有多少消息出现问题,哪一条等。