什么是死信队列
死信队列是mq用于存储死信的队列,那么何为死信呢?mq队列中的消息在三种情况下会变为死信:
1、当消息的过期时间到了却依然没被消费者消费,比如,当消费者的消费能力不足或者是我们为消息设置的过期时间太短的时候会发生这种情况;
2、当消息被拒绝并且禁止重新入队,比如当消费者消费消息的过程中发生了业务异常而拒绝了消息并且禁止这个消息重新入队时,这个消息也会变为死信;
3、当队列的长度达到了最大限制时,新消息无法入队而变为死信。
在实际的开发中,我们应该考虑到业务队列中的消息会变为死信的这些情况,所以应该为业务队列关联死信交换机,并且创建死信队列绑定到死信交换机,以便业务队列中产生的死信能被正确路由到死信队列中保存;而为了保证业务数据的最终一致性,我们可以部署死信消费者去监听死信队列,消费死信。可以通过设置队列的x-dead-letter-exchange属性来为队列设置死信交换机。