此版本仍在开发中,尚未被视为稳定版本。对于最新的稳定版本,请使用 spring-cloud-stream 4.1.4! |
使用 RabbitMQ Binder 重试
在 Binder 中启用重试后,侦听器容器线程将在配置的任何回退期间暂停。 当单个使用者需要严格排序时,这可能很重要。但是,对于其他使用案例,它会阻止在该线程上处理其他消息。 使用 Binder 重试的另一种方法是在死信队列 (DLQ) 上设置具有生存时间的死信,并在 DLQ 本身上设置死信配置。 有关此处讨论的属性的更多信息,请参阅“RabbitMQ Binder 属性”。 您可以使用以下示例配置来启用此功能:
-
设置为 . Binder 将创建一个 DLQ。 (可选)您可以在 中指定名称。
autoBindDlq
true
deadLetterQueueName
-
设置为您希望在两次重新投递之间等待的退后时间。
dlqTtl
-
将 设置为 default exchange。 来自 DLQ 的过期邮件将路由到原始队列,因为默认队列名称为 ()。 设置为默认 exchange 是通过设置无值的属性来实现的,如下一个示例所示。
dlqDeadLetterExchange
deadLetterRoutingKey
destination.group
要强制消息为死信,请抛出 an 或 set to (默认值) 并抛出 any 异常。AmqpRejectAndDontRequeueException
requeueRejected
false
循环无休止地继续,这对于暂时性问题来说很好,但你可能想在尝试几次后放弃。
幸运的是,RabbitMQ 提供了标头,它允许您确定已经发生了多少个周期。x-death
要在放弃后确认消息,请抛出 .ImmediateAcknowledgeAmqpException