RabbitMQ實戰篇9-訊息持久化
阿新 • • 發佈:2019-01-10
在前面的第七和第八節我們講解了如何實現訊息的釋出和訂閱。同時也提到了一些問題,比如說如果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的服務,
可以看到,服務已經被停了。
也不知道什麼鬼,停掉服務後重新整理瀏覽器是這個東東:
我們再次啟動服務,重新整理瀏覽器
可以看到,剛才的兩個訊息還在。證明訊息被持久化了。