消息持久化
更新時間 2023-07-03 21:29:47
最近更新時間: 2023-07-03 21:29:47
分享文章
介紹分布式消息服務RabbitMQ消息持久化功能。
使用場景
在生產過程中,難免會發生服務器宕機的事情,RabbitMQ也不例外,可能由于某種特殊情況下的異常而導致RabbitMQ宕機從而重啟,那么這個時候對于消息隊列里的數據,包括交換機、隊列以及隊列中存在消息恢復就顯得尤為重要了。RabbitMQ本身帶有持久化機制,包括交換機、隊列以及消息的持久化。持久化的主要機制就是將信息寫入磁盤,當RabbtiMQ服務宕機重啟后,從磁盤中讀取存入的持久化信息,恢復數據。
設置交換器持久化
(1)登錄管理控制臺。
(2)進入RabbitMQ管理控制臺。
(3)在實例列表頁在操作列,目標實例行點擊“管理”。
(4)點擊“交換器管理”后,點擊“新建”按鈕。

(5)點擊“新建”后出現以下窗口,是否持久化選擇是。

設置隊列持久化
(1)登錄管理控制臺。
(2)進入RabbitMQ管理控制臺。
(3)在實例列表頁在操作列,目標實例行點擊“管理”。
(4)點擊“隊列管理”后,點擊“新建”按鈕。

(5)點擊“新建”后出現以下窗口,是否持久化選擇是。

設置消息持久化
Queue設置為持久化后,通過設置“MessageProperties”為“PERSISTENT_TEXT_PLAIN”來向Queue發送持久消息。
java客戶端示例為:
import com.rabbitmq.client.MessageProperties;
channel.basicPublish("", "my_queue",MessageProperties.PERSISTENT_TEXT_PLAIN, message.getBytes());