死信、延遲、重試隊列
#死信隊列
DLQ(Deal Letter Queue),死信隊列。當一個消息在隊列中變成死信之后,他能被重新發送到 DLQ 中,與 DLQ 綁定到隊列就是死信隊列。
#什么情況下需要死信隊列
· 消息被拒絕
· 消息過期
· 隊列達到最大長度
生產者生產一條消息,存儲到普通隊列中;設置隊列的過期時間為 10 秒,在 10 秒內沒有消費者消費消息,那么判定消息過期;此時如果設置了死信隊列,過期消息被丟給死信隊列交換機,然后被存儲在死信隊列中。
#延遲隊列
顧名思義就是延遲執行消息,比如我們可以增加一個隊列並設置其超時時間為 10 秒並且不設置任何消費者,等到消息超時,我們可以將消息放入死信隊列,讓消費者監聽這個死信隊列就達到了延遲隊列的效果。
#重試隊列
重試的消息在延遲的某個時間點(業務可設置)后,再次投遞給消費者。而如果一直這樣重復消費都持續失敗到一定次數,就會投遞到死信隊列,最后需要進行人工干預。