0

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

我知道我们可以使用 ActiveMQ(在将来某个时间点重试消息(ActiveMQ) )来实现这种功能,但无法为 RabbitMQ 找到类似的解决方案。

有没有办法使用 Spring amqp 和 RabbitMQ 实现这一目标?

4

1 回答 1

0

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

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

于 2014-06-27T21:41:09.193 回答