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

2019/10/14 15:11
阅读数 40

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

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部