RabbitMQ& Spring amqp重试不会阻塞消费者

时间:2014-06-27 20:55:57

标签: rabbitmq spring-amqp spring-retry

我正在使用RabbitMQ和Spring amqp,我宁愿不丢失消息。通过使用指数退避策略进行重试,我可能会阻止我的消费者,他们可以处理他们可以处理的消息。我想在几天内通过指数退避策略重试失败的消息,但我不想让消费者阻止好几天,我希望它继续处理其他消息。

我知道我们可以使用ActiveMQ(Retrying messages at some point in the future (ActiveMQ))实现这种功能,但无法为RabbitMQ找到类似的解决方案。

有没有办法用Spring amqp和RabbitMQ来实现这个目标?

1 个答案:

答案 0 :(得分:0)

你可以通过死信交换来做到这一点。拒绝该消息并将其路由到DLE / DLQ并拥有一个单独的侦听器容器,该容器从DLQ中消耗并根据需要停止/启动该容器。

或者,您可以使用RabbitTemplate receive(或receiveAndConvert)方法(按计划)轮询DLQ而不是第二个容器,并将失败的消息路由回来到主要队列。