對於有異常的消息我們可以有如下做法:
- 記錄下來再ack。
- nack或者reject,同時將requeue設為false。
- 在第2條的基礎上增加死信(Dead Letter)。
上邊的第3個做法可以讓這些異常的消息進入一個異常消息隊列,等待我們的處理。
一個消息成為死信有以下幾種原因:
- rejected - 也就是上邊第2種做法
- expired - 超過了隊列設置的TTL(該值為消息在隊列中停留最大時長,注意在達到TTL時消息為“Ready”狀態才會過期生效)
- maxlen - 隊列里的消息數量超過了設置的最大值(該值也指“Ready”狀態的消息數,而不是Total)
