在绑定器中启用重试后,侦听器容器线程将在配置的任何回退期间暂停。 当需要对单个使用者进行严格排序时,这可能很重要。但是,对于其他用例,它会阻止在该线程上处理其他消息。 使用活页夹重试的替代方法是设置死信,并在死信队列 (DLQ) 上设置死信,并在 DLQ 本身上设置死信配置。 有关此处讨论的属性的更多信息,请参阅“RabbitMQ Binder 属性”。 您可以使用以下示例配置来启用此功能:Spring中文文档

  • 设置为 。 活页夹将创建一个 DLQ。 (可选)可以在 中指定名称。autoBindDlqtruedeadLetterQueueNameSpring中文文档

  • 设置为您希望在重新交付之间等待的回退时间。dlqTtlSpring中文文档

  • 将 设置为默认交换。 来自 DLQ 的过期消息将路由到原始队列,因为默认值为队列名称 ()。 通过设置不带值的属性,可以设置为默认交换,如下例所示。dlqDeadLetterExchangedeadLetterRoutingKeydestination.groupSpring中文文档

若要强制将消息设置为死信,请抛出 或设置为(默认值)并抛出任何异常。AmqpRejectAndDontRequeueExceptionrequeueRejectedfalseSpring中文文档

循环无休止地继续,这对于暂时性问题很好,但你可能想在尝试几次后放弃。 幸运的是,RabbitMQ 提供了标头,可让您确定发生了多少个周期。x-deathSpring中文文档

若要在放弃后确认消息,请抛出 .ImmediateAcknowledgeAmqpExceptionSpring中文文档