Rabbitmq 拉比特公司;Spring amqp在不阻塞使用者的情况下重试

Rabbitmq 拉比特公司;Spring amqp在不阻塞使用者的情况下重试,rabbitmq,spring-amqp,spring-retry,Rabbitmq,Spring Amqp,Spring Retry,我正在使用RabbitMQ和Spring amqp,在这两个平台上我更愿意不丢失消息。通过使用指数退避策略重试,我潜在地阻止了我的消费者,他们可能正在处理他们可以处理的消息。我想让失败的消息在几天内使用指数退避策略重试,但我不想让使用者阻塞几天,我希望它继续处理其他消息 我知道我们可以使用ActiveMQ()实现这种功能,但无法为RabbitMQ找到类似的解决方案 有没有办法通过Spring amqp和RabbitMQ实现这一点?您可以通过死信交换来实现。拒绝消息并将其路由到DLE/DLQ,并拥

我正在使用RabbitMQ和Spring amqp,在这两个平台上我更愿意不丢失消息。通过使用指数退避策略重试,我潜在地阻止了我的消费者,他们可能正在处理他们可以处理的消息。我想让失败的消息在几天内使用指数退避策略重试,但我不想让使用者阻塞几天,我希望它继续处理其他消息

我知道我们可以使用ActiveMQ()实现这种功能,但无法为RabbitMQ找到类似的解决方案


有没有办法通过Spring amqp和RabbitMQ实现这一点?

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


或者,您可以使用
rabbitmplate
receive
(或
receiveAndConvert
)方法(按计划)轮询DLQ,并将失败的消息路由回主队列。

我更倾向于后一种解决方案。但在我的情况下,我只想重试,如果它是一个可重试的异常,其他我将通过自定义恢复程序将它们移动到DLQ。当我轮询DLQ时,我会对那些由于可重试异常而失败的消息感兴趣。