所谓的死信队列只不过是我们自己定义的一个队列,注意对于这个队列只能人工干预
面试题:你们是如何保证消息不会丢失的
1,什么是死信
在RabitMQ中充当主角的就是消息,在不同场景下,消息会有不同地表现。
死信就是在特定的场景下的一种表现形式,这些场景包括:
1. 消息被拒绝访问,即 RabbitMQ返回 basicNack 的信号时 或者拒绝basicReject
2. 消费者发生异常,超过重试次数 。 其实spring框架调用的就是 basicNack
3. 消息的Expiration 过期时长或队列TTL过期时间。
4. 消息队列达到最大容量
上述场景经常产生死信,即消息在这些场景中时,被称为死信。
2,什么是死信队列
死信队列就是存储死信的消息队列,在死信队列中,有且只有死信构成,不存在其他类型的消息
死信队列在 RabbitMQ 中并不会单独存在,往往死信队列都会绑定这一个普通的业务消息队列,当所绑定的消息队列中,有消息变成死信了,那么这个消息就会重新被交换机路由到指定的死信队列中去,我们可以通过对这个死信队列进行监听,从而手动的去对这一消息进行补偿。 人工干预
3、那么,我们到底如何来使用死信队列呢?
死信队列基本使用,只需要在声明业务队列的时候,绑定指定的死信交换机和RoutingKey即可。
public c