死信隊列+TTL實現延遲重試

思路

MQ配置:

1.設置正常處理隊列及綁定關係,exchange,queue,key

2.創建5s延遲隊列queue_5s,10s延遲隊列queue_10s,20s延遲隊列queue_20s,差錯處理隊列queue_error,分別於exchange_delay綁定,設置routingKey分別爲key_5s,key_10s,key_20s,key_error

3.分別配置queue_5s,queue_10s,queue_20s的死信交換機爲exchange,routingKey爲key

代碼實現:

1.消息發送方正常投遞消息到exchange —> key(正常發送)

2.消息處理方式正常處理消息

3.消息處理方異常,則計算routingKey,進行投遞(可以將重試次數放入message head  或者直接使用message 的routingKey)

4.若消息投遞到queue_*s中,則過期後自動轉到 exchange —> key 到達 queue

5.若消息投遞到queue_error,則進行異常處理(報警或者其他之類)

 

此處亦可以使用單通道queue_delay,過期時間設置在消息message上,通道不設置過期,如下

新版本的rabbitMQ,安裝了插件rabbitmq_delayed_message_exchange後,可直接設置延遲投遞,如下

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章