版權聲明:本文為博主原創文章,遵循 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