RabbitMQ重试机制

时间:2015-03-01 12:09:25

标签: php rabbitmq php-amqp

我使用rabbitMQ,我使用basic_get从队列中获取每条消息而不自动执行acking过程,这意味着消息保留在队列中,直到我确认或无法消息。

有时,由于某些异常抛出而导致无法处理的消息会导致无法完全处理这些消息。

在这些情况下,我想再次尝试让我们立即说两次,如果我仍然无法处理它们 - 我想在一小时的间隔内再试一次3次,如果那么一切都失败然后我我希望能够消息并将其从队列中永久删除。

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

1 个答案:

答案 0 :(得分:1)

你应该使用多个队列。

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

如果您抛出异常,请抓住它,确认消息并将其移至让我们说错误_queue_1。您可以设置第二个侦听器(使用不同的计时器),谁将处理error_queue_1。

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

这也可以让你知道有多少消息有问题,哪一个等等。