首页 > 其他 > 详细

【RabbitMQ消息中间件】11.持久化和非持久化队列

时间:2019-10-14 15:47:54      阅读:112      评论:0      收藏:0      [点我收藏+]

版权声明:本文为博主原创文章,遵循 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

【RabbitMQ消息中间件】11.持久化和非持久化队列

原文:https://www.cnblogs.com/laosunlaiye/p/11671610.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!