SpringCloud 重试RabbitMQ Binder

2023-11-29 16:02 更新

当在活页夹中启用重试后,侦听器容器线程将在配置的任何退避期间暂停。当需要单个消费者严格订购时,这可能很重要。但是,对于其他用例,它阻止在该线程上处理其他消息。使用活页夹重试的另一种方法是设置带有时间的无效字母,以保留在无效字母队列(DLQ)中,并在DLQ本身上进行无效字母配置。有关此处讨论的属性的更多信息请参见“ RabbitMQ Binder Properties” 您可以使用以下示例配置来启用此功能:

  • autoBindDlq设置为true活页夹创建一个DLQ。(可选)您可以在deadLetterQueueName中指定一个名称。
  • dlqTtl设置为您要在两次重新交付之间等待的退避时间。
  • dlqDeadLetterExchange设置为默认交换。来自DLQ的过期消息被路由到原始队列,因为默认的deadLetterRoutingKey是队列名称(destination.group)。设置为默认交换是通过将属性设置为无值来实现的,如下例所示。

要强制对消息进行死信处理,请抛出AmqpRejectAndDontRequeueException或将requeueRejected设置为true(默认值)并抛出任何异常。

循环无休止地继续进行,这对于瞬态问题很好,但是您可能需要在尝试几次后放弃。幸运的是,RabbitMQ提供了x-death标头,可让您确定发生了多少个循环。

要在放弃后确认消息,请抛出ImmediateAcknowledgeAmqpException


以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号