rabbitmq系列(四)死信队列
执偕 人气:1
## 一、什么是死信队列
当消息在一个队列中变成一个死信之后,它将被重新publish到另一个交换机上,这个交换机我们就叫做死信交换机,私信交换机将死信投递到一个队列上就是死信队列。具体原理如下图:
![死信交换机.png](https://img2020.cnblogs.com/other/1719198/202003/1719198-20200323092450941-207669488.png)
消息变成死信的三种情况:
- 消息被拒绝(basic.reject / basic.nack),并且requeue = false
- 消息TTL过期
- 队列达到最大长度
## 二、手动签收应答模式
应答模式分为两种,手动签收和自动签收,自动应答就是消费者消费了一条消息就自动告诉队列删除消息。这样的弊端就是不管消费逻辑有没有成功,都会将消息删除,这样就会造成消息丢失。而使用手动签收后,就是在消费逻辑处理成功后,手动告诉队列消费成功,然后队列再去删除这条消息。
1. 再消费者配置文件中开启手动签收模式
```java
spring.rabbitmq.listener.simple.acknowledge-mode = manual
```
2. 在消费逻辑处理成功后手动签收,修改消费者代码
```java
@RabbitListener(queues = QUEUE_NAME)
public void receiveMessage(Message message,@Headers Map
加载全部内容