Spring boot 重试@RabbitListener的配置,以编程方式指定死信队列
我一直在试图找到一种方法,将重试机制设置为所有Spring boot 重试@RabbitListener的配置,以编程方式指定死信队列,spring-boot,spring-amqp,spring-rabbit,Spring Boot,Spring Amqp,Spring Rabbit,我一直在试图找到一种方法,将重试机制设置为所有@RabbitListener。我已经尝试了以下属性: listener: auto-startup: true concurrency: 1 max-concurrency: 1 retry: enabled: true initial-interval: 1000 max-attempts: 3 max-interval: 10000 multiplier: 2 stateless:
@RabbitListener
。我已经尝试了以下属性:
listener:
auto-startup: true
concurrency: 1
max-concurrency: 1
retry:
enabled: true
initial-interval: 1000
max-attempts: 3
max-interval: 10000
multiplier: 2
stateless: true
它可以很好地处理唯一的问题,即消息不会发送错误。我唯一的问题是,为了将消息发送到特定的DLQ
,我必须更改队列以添加参数x-dead-letter-exchange
和x-dead-letter-routing-key
,这是我想要避免的
所以我的问题是:
DLQ
位置?不使用参数x-dead-…RetryInterceptorBuilder
构建)覆盖侦听器容器工厂的建议链,而不是注入
builder.recoverer(new RejectAndDontRequeueRecoverer());
您需要插入一个适当配置的重新发布MessageRecoverer
-以及发布到您选择的exchange,它会向消息头添加附加信息(堆栈跟踪等)
请参阅SimpleRableBitListenerContainerFactoryConfigurer
,了解默认拦截器是如何配置的
中讨论了重新发布恢复程序