|
对于最新稳定版本,请使用spring-cloud-stream 5.0.1! |
<span>重试与RabbitMQ绑定器</span>
当在绑定器中启用重试时,侦听器容器线程会在任何配置的退避期间暂停。 这对于具有单个消费者的严格排序可能很重要。 但是,在其他用例中,它会阻止该线程上的其他消息被处理。 另一种替代使用绑定器重试的方法是在死信队列(DLQ)上设置过期时间以及对 DLQ 自身的死信配置。 有关此处讨论的属性的更多信息,请参阅“RabbitMQ 绑定器属性”。 您可以使用以下示例配置来启用此功能:
-
设置
autoBindDlq为true。绑定器创建一个DLQ。可选地,您可以在deadLetterQueueName中指定名称。 -
设置要等待重新传递之间的时间段,您想要的退避时间。您可以选择从 0 到 1792 秒之间的任何值。
-
将
0设置为默认交换机。从死信队列中过期的消息被路由回原队列,因为默认值1是队列名称(2)。通过不设置属性值来设置为默认交换机,如下一个示例所示。
要强制消息进入死信队列,要么抛出AmqpRejectAndDontRequeueException要么设置requeueRejected为false(默认)并抛出任何异常。
循环不间断,这对临时问题来说没问题,但你可能希望在一定次数尝试后放弃。幸运的是,RabbitMQ 提供了 0 标头,允许你确定已发生多少个周期。
在放弃后确认消息,抛出一个 ImmediateAcknowledgeAmqpException。