zoukankan      html  css  js  c++  java
  • 【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

  • 相关阅读:
    armlinuxgnueabihf、aarch64linuxgnu等ARM交叉编译GCC的区别
    《JAVA与模式》之简单工厂模式
    wget常用命令
    sublime text添加Jquery插件
    e = e || window.event用法细节讨论
    配置运行 Compilify.net
    [翻译].NET中的Command(命令)模式
    EF Code First 中使用Jarek Kowalski's Provider的方法1
    WF实例学习笔记:(1)准备工作
    Entity Framework Code First Caching
  • 原文地址:https://www.cnblogs.com/laosunlaiye/p/11671610.html
Copyright © 2011-2022 走看看