RabbitMQ自動補償機制觸發:(多用於調用第三方接口)
1.當我們的消費者在處理我們的消息的時候,程序拋出異常情況下(默認無限次數重試)
2.應該對我們的消息重試設置間隔重試時間,比如消費失敗最多隻能重試5次,間隔3秒(防止重複消費,冪等問題)
如果重試5次,也就是15秒內重試還是失敗情況下應該如何處理?
1.默認情況下,重試多次還是失敗的話,會自動刪除該消息(消息可能會丟失)
解決思路:
A:如果重試多次還是失敗的情況下,最終存放到死信隊列.
B:採用表日誌記錄,消費失敗錯誤的日誌記錄 後期人工自動對消息實現補償.
#配置virtual-host虛擬主機
spring.rabbitmq.virtual-host=/zhang_rabbit
#ip地址
spring.rabbitmq.host=127.0.0.1
#用戶名 密碼
spring.rabbitmq.username=zhang
spring.rabbitmq.password=zhang
#連接端口號
spring.rabbitmq.port=5672
##重試機制
#開啓消費者(程序出現異常的情況下會,捕獲異常重試將不生效)進行重試
spring.rabbitmq.listener.simple.retry.enabled=true
#最大重試次數
spring.rabbitmq.listener.simple.retry.max-attempts=5
#最大間隔時間
spring.rabbitmq.listener.simple.retry.max-interval=20000ms
#重試間隔時間 3秒
spring.rabbitmq.listener.simple.retry.initial-interval=3000ms
#乘子 重試間隔*乘子得出下次重試間隔 3s 6s 12s 24s 此處24s>20s 走20s
spring.rabbitmq.listener.simple.retry.multiplier=2
#重試次數超過上面的設置之後是否丟棄(false不丟棄時需要寫相應代碼將該消息加入死信隊列)
spring.rabbitmq.listener.simple.default-requeue-rejected=false