对于有异常的消息我们可以有如下做法:
- 记录下来再ack。
- nack或者reject,同时将requeue设为false。
- 在第2条的基础上增加死信(Dead Letter)。
上边的第3个做法可以让这些异常的消息进入一个异常消息队列,等待我们的处理。
一个消息成为死信有以下几种原因:
- rejected - 也就是上边第2种做法
- expired - 超过了队列设置的TTL(该值为消息在队列中停留最大时长,注意在达到TTL时消息为“Ready”状态才会过期生效)
- maxlen - 队列里的消息数量超过了设置的最大值(该值也指“Ready”状态的消息数,而不是Total)