首页 > 其他分享 >【RabbitMQ消息中间件】11.持久化和非持久化队列

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

时间:2023-03-19 11:04:19浏览次数:37  
标签:11 持久 队列 Spring RabbitMQ Rabbit 消息中间件 myQueue


上一篇介绍并搭建了Spring-Rabbit工程,并且创建了一个名为MyQueue的队列。下面补充一个有关持久化和非持久化队列的知识点。



登录RabbitMQ的图形化管理界面,选择“Queue”队列查看模块,可以看到之前在Spring-Rabbit工程中创建的MyQueue的队列:


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



我们可以观察到在“myQueue”列中,后面有一个Features的属性,为“D”,和下面的队列都有不同,这是一个什么参数呢?其实该参数“D”就是“durable”的意思,即“持久的”,也就是说名为“myQueue”的队列,是一个持久化队列,而下面Features属性为空的队列就是非持久化队列。



持久化队列和非持久化队列的区别是,持久化队列会被保存在磁盘中,固定并持久的存储,当Rabbit服务重启后,该队列会保持原来的状态在RabbitMQ中被管理,而非持久化队列不会被保存在磁盘中,Rabbit服务重启后队列就会消失。



我们现在将Rabbit服务重启:


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


然后刷新RabbitMQ的Queue管理界面,可以看到现在只剩下状态为持久化的“myQueue”队列了:


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



非持久化比持久化的优势就是,由于非持久化不需要保存在磁盘中,所以使用速度就比持久化队列快。即是非持久化的性能要高于持久化。



而持久化的优点就是会一直存在,不会随服务的重启或服务器的宕机而消失。



在Spring的配置中,在定义队列的配置中,将参数durable设置为“false”,则该队列为非持久化队列,设置成“true”时,该队列就为持久化队列:

<!-- 定义队列,自动声明 -->
<rabbit:queue name="myQueue" auto-declare="true" durable="true"/>

那么,在日常开发中,我们是需要是用持久化队列还是非持久化队列呢?这个需要看系统业务的具体需求。如果需要队列的完整性,数据在队列中的保存是必须不允许丢失的,那么可以使用持久化。而当需要获取的信息是实时的,或者是随机的信息,不需要信息的精确性或完整性,但是追求获取性能,可以选择非持久化队列。

标签:11,持久,队列,Spring,RabbitMQ,Rabbit,消息中间件,myQueue
From: https://blog.51cto.com/u_16012040/6131000

相关文章

  • 【RabbitMQ消息中间件】9.通配符模式
    之前我们讲解了简单队列、work模式、订阅模式、路由模式,本篇我们讲解RabbitMQ的最后一种模式,叫“通配符模式”。通配符交换机的通信机制如下所示:记得上......
  • 【RabbitMQ消息中间件】8.路由模式
    上一篇讲解了RabbitMQ的“订阅模式”,本篇来讲解RabbitMQ的队列的“路由模式”。其实严格来讲,RabbitMQ只有三种模式:“简单模式”、“work模式”以及“交......
  • 【RabbitMQ消息中间件】7.订阅模式
    上一篇我们了解了RabbitMQ的消息的确认模式,本篇我们继续讲解RabbitMQ的五大队列模式之一的“订阅模式”。在实际开发中,通常会遇到以下需求:一个生产者,多......
  • 【RabbitMQ消息中间件】6.消息的确认模式
    上一篇讲解了如何使用Java实现一个work队列模式,并实现能做多劳的效果。本篇我们来了解一下有关RabbitMQ的“消息的确认模式”。当消费者从队列中获取......
  • 【RabbitMQ消息中间件】5.work模式
    上一篇讲解了如何使用Java连接RabbitMQ服务,并实现一个简单队列模式。本篇讲解RabbitMQ的另一个队列模式----work模式。work的队列模式图如下所示:可以看......
  • 【RabbitMQ消息中间件】3.管理界面中的功能
    上一篇我们讲解了RabbitMQ的安装和网页管理工具的启动,并且简单的创建了用户和权限。本篇讲解一下RabbitMQ管理工具中其它的一些管理功能。首先确保Rabb......
  • 【RabbitMQ消息中间件】1.RabbitMQ简介
    一、什么是MQ?MQ为MessageQueue,即是“消息队列”,它是应用程序和应用程序之间的同新方法。遵循MessageQueue规则开发出来的,具有消息队列特点的产品,都可以称之为“消息中间......
  • P1157 组合的输出
    题目链接P1157组合的输出题解#include<bits/stdc++.h>usingnamespacestd;intn,r;intans[25];intvis[25];voiddfs(intdep){ if(dep==r+1){ for(inti=......
  • 110Js自执行函数
    JavaScript自执行函数(Self-ExecutingFunctions),也被称为立即执行函数(ImmediatelyInvokedFunctionExpressions,IIFE),是一种常见的JavaScript编程模式。这种模式的基本思路......
  • 题解:【ARC112C】 DFS Game
    题目链接题目里面的注意点还是很多的,如果读错了题整个思路可能会一点都不对。首先是移动和选取硬币的操作是分开的,所以你移动到了一个有硬币的节点,将是你的对手获得硬币。......