1. 程式人生 > >rabbitmq系列(四)死信佇列

rabbitmq系列(四)死信佇列

## 一、什麼是死信佇列 當訊息在一個佇列中變成一個死信之後,它將被重新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,@Hea