1. 程式人生 > >RabbitMQ實戰篇9-訊息持久化

RabbitMQ實戰篇9-訊息持久化

在前面的第七和第八節我們講解了如何實現訊息的釋出和訂閱。同時也提到了一些問題,比如說如果RabbitMQ服務掛掉了,那麼我們的訊息也就丟失了。怎麼解決這樣的問題呢?這就需要我們將訊息進行持久化啦

這節,我們就在原有的基礎上來講解訊息的持久化

如何持久化

其實,在之前我們已經將訊息進行了持久化。只是我們並沒有去關注。

簡單說說訊息釋出訂閱的流程:

生產者將訊息傳送到訊息交換機,交換機根據一定的規則將訊息路由到指定的佇列。消費者再從指定的佇列上訂閱訊息。

所以,我們可以可以看到。如果想將訊息進行持久化,只需要將交換機和佇列持久化就可以了。當然,spring也為我們提供了很好的封裝。我們在建立交換機和佇列的時候都需要傳入一個引數 durable


durable true if we are declaring a durable queue (the queue will survive a server restart)

這是官方的說明,也就是說當我們在建立佇列時指定durable = true,當服務重啟的時候這個佇列將會存活。也就是說佇列被持久化了。同樣的,交換機的durable也和佇列同理。

測試持久化

接下來我們來測試下:

我們只啟動order服務,釋出訊息,而不消費它(比如傳送兩個訊息)。我們登入rabbitMQ,可以看到現在有2個訊息待消費。


然後停掉RabbitMQ的服務,


可以看到,服務已經被停了。

也不知道什麼鬼,停掉服務後重新整理瀏覽器是這個東東:


我們再次啟動服務,重新整理瀏覽器


可以看到,剛才的兩個訊息還在。證明訊息被持久化了。

回到目錄