【RabbitMQ消息中間件】11.持久化和非持久化隊列


版權聲明:本文為博主原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
本文鏈接:https://blog.csdn.net/u013517797/article/details/79691422
上一篇介紹並搭建了Spring-Rabbit工程,並且創建了一個名為MyQueue的隊列。下面補充一個有關持久化和非持久化隊列的知識點。

登錄RabbitMQ的圖形化管理界面,選擇“Queue”隊列查看模塊,可以看到之前在Spring-Rabbit工程中創建的MyQueue的隊列:

 

 


我們可以觀察到在“myQueue”列中,后面有一個Features的屬性,為“D”,和下面的隊列都有不同,這是一個什么參數呢?其實該參數“D”就是“durable”的意思,即“持久的”,也就是說名為“myQueue”的隊列,是一個持久化隊列,而下面Features屬性為空的隊列就是非持久化隊列。

持久化隊列和非持久化隊列的區別是,持久化隊列會被保存在磁盤中,固定並持久的存儲,當Rabbit服務重啟后,該隊列會保持原來的狀態在RabbitMQ中被管理,而非持久化隊列不會被保存在磁盤中,Rabbit服務重啟后隊列就會消失。

我們現在將Rabbit服務重啟:

 

 

然后刷新RabbitMQ的Queue管理界面,可以看到現在只剩下狀態為持久化的“myQueue”隊列了:

 

 


非持久化比持久化的優勢就是,由於非持久化不需要保存在磁盤中,所以使用速度就比持久化隊列快。即是非持久化的性能要高於持久化。

而持久化的優點就是會一直存在,不會隨服務的重啟或服務器的宕機而消失。

在Spring的配置中,在定義隊列的配置中,將參數durable設置為“false”,則該隊列為非持久化隊列,設置成“true”時,該隊列就為持久化隊列:
<!-- 定義隊列,自動聲明 -->

<rabbit:queue name="myQueue" auto-declare="true" durable="true"/>

  


那么,在日常開發中,我們是需要是用持久化隊列還是非持久化隊列呢?這個需要看系統業務的具體需求。如果需要隊列的完整性,數據在隊列中的保存是必須不允許丟失的,那么可以使用持久化。而當需要獲取的信息是實時的,或者是隨機的信息,不需要信息的精確性或完整性,但是追求獲取性能,可以選擇非持久化隊列。

轉載請注明出處:https://blog.csdn.net/acmman/article/details/79691422
————————————————
版權聲明:本文為CSDN博主「光仔December」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/acmman/article/details/79691422


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM