前幾篇介紹了SpringCloud Stream整合RabbitMQ、消費失敗後重試maxAttempts屬性、死信隊列(DLQ隊列)
- SpringCloud Stream 整合RabbitMQ
- SpringCloud Stream 整合 RabbitMQ-消費失敗後重試
- SpringCloud Stream 整合 RabbitMQ-DLQ隊列
本篇爲了方便消息放入死信隊列後排查問題,將異常信息顯示在messages列表,將使用republishToDlq
一、屬性-republishToDlq
根據SpringCloud官方文檔上,RabbitMQ消費者相關屬性部分可以找到republishToDlq:
可以看到,默認是false,如果設置爲true,將會把消息的頭信息(包括異常消息和stack trace)一起加入到dlq隊列中
接下來實際試驗一下:
一、項目
本次就接着上次的項目繼續使用,項目完整代碼:https://github.com/zrk333/mq-service
二、修改消費者
1、添加配置
spring.cloud.stream.rabbit.bindings.message-center-input.consumer.republishToDlq=true
2、驗證
保留消費方法繼續拋異常,重啓消費者,並調用生產者發送消息,看dlq隊列messages信息:
可以看到新加入的包含了異常等信息,對排查問題解決bug有很大幫助。
三、補充
dlqTtl屬性是設置死信隊列消息存放時間,默認沒有限制,如果設置,可能發生消息丟失
spring.cloud.stream.rabbit.bindings.message-center-input.consumer.dlqTtl=86400000