如何在Spring Cloud Stream中使用默认死信队列的消息?

时间:2019-09-20 19:49:36

标签: java spring spring-boot rabbitmq spring-cloud-stream

我将默认DLQ配置如下:

spring:
  cloud:
    stream:
      rabbit:
        default:
          consumer:
            auto-bind-dlq: true
            republish-to-dlq: true
            dead-letter-queue-name: my-dlq

我想使用该默认DLQ中的消息并在业务域中对其进行处理。

如何使用 Spring Cloud Stream 收听这些消息?

谢谢

1 个答案:

答案 0 :(得分:1)

没有内置任何内容,但是the documentation shows some techniques ...

  

由于您无法预料用户将如何处置死信,因此该框架未提供任何标准机制来处理死信。如果死信的原因是短暂的,则您可能希望将消息路由回原始队列。但是,如果问题是永久性问题,则可能导致无限循环。以下Spring Boot应用程序显示了一个示例,该示例说明了如何将这些消息路由回原始队列,但在尝试三次后将其移至第三个“停车场”队列。第二个示例使用RabbitMQ延迟消息交换为重新排队的消息引入延迟。在此示例中,每次尝试的延迟都会增加。这些示例使用@RabbitListener接收来自DLQ的消息。您还可以在批处理过程中使用RabbitTemplate.receive()。

     

...