rabbitmq的持久化

news2024/11/24 12:58:55

目录

队列实现持久化 

 如何删除队列​编辑

 消息实现持久化

不公平分发


 

如何保障当 RabbitMQ 服务停掉以后消息生产者发送过来的消息不丢失。默认情况下 RabbitMQ 退出或由于某种原因崩溃时,它忽视队列和消息,除非告知它不要这样做。确保消息不会丢失需要做两件事:我们需要将队列和消息都标 记为持久化

队列实现持久化 

之前我们创建的队列都是非持久化的,rabbitmq 如果重启的化,该队列就会被删除掉,如果
要队列实现持久化 需要在声明队列的时候把 durable 参数设置为持久化 
 boolean durable=true;
 channel.queueDeclare(QUEUE_NAME,durable,false,false,null);
 String message="hello world!!!!";
但是需要注意的就是如果之前声明的队列不是持久化的,需要把原先队列先删除,或者重新
创建一个持久化的队列,不然就会出现错误:but current is 'fakse'

 

 如何删除队列

 拉到最底下,点击删除。

 持久化队列的标识

 消息实现持久化

要想让消息实现持久化需在消息生产者修改代, MessageProperties.PERSISTENT_TEXT_PLAIN 添加这个属性。

 

 channel.basicPublish("",QUEUE_NAME, MessageProperties.PERSISTENT_TEXT_PLAIN,message.getBytes());

不公平分发

我们学习到 RabbitMQ 分发消息采用的轮训分发,但是在某种场景下这种策略并不是很好,比方说有两个消费者在处理任务,其中有个消费者 1 处理任务的速度非常快,而另外一个消费者 2 处理速度却很慢,这个时候我们还是采用轮训分发的话就会到这处理速度快的这个消费者很大一部分时间 处于空闲状态,而处理慢的那个消费者一直在干活,这种分配方式在这种情况下其实就不太好,但是 RabbitMQ 并不知道这种情况它依然很公平的进行分发。

 

int prefetchCount=1;
channel.basicQos(prefetchCount);

预取值

本身消息的发送就是异步发送的,所以在任何时候, channel 上肯定不止只有一个消息另外来自消费者的手动确认本质上也是异步的。因此这里就存在一个未确认的消息缓冲区,因此希望开发人员能限制此 缓冲区的大小,以避免缓冲区里面无限制的未确认消息问题 。这个时候就可以通过使用 basic.qos 方法设置“预取计数”值来完成的。该值定义通道上允许的未确认消息的最大数量 。一旦数量达到配置的数量,RabbitMQ 将停止在通道上传递更多消息,除非至少有一个未处理的消息被确认,例如,假设在通道上有未确认的消息 5 6 7 8 ,并且通道的预取计数设置为 4 ,此时 RabbitMQ 将不会在该通道上再传递任何消息,除非至少有一个未应答的消息被 ack 。比方说 tag=6 这个消息刚刚被确认 ACK RabbitMQ 将会感知这个情况到并再发送一条消息。消息应答和 QoS 预取值对用户吞吐量有重大影响。通常,增加预取将提高向消费者传递消息的速度。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/874908.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

浅析前端请求登录与后台对接

首先确保前后端接口参数一致,我这里使用的是ant design Pro 前端框架 小技:shiftf6,全局重构,当接口不一致时很方便 前: 后: 前后端交互:前端需要向后端发送请求,前端ajax来请求后…

Ubuntu虚拟机增加交换内存

接下来增加交换内存。配置交换内存,需要用户根据自己的实际情况进行配置。这里举例分配 5G 交换内存。 在开始之前,使用命令检查一下您的 ubuntu 的 swap 分区,可以看到交换分区为 2G ,如下图所示: sudo swapon …

【ChatGPT 指令大全】怎么使用ChatGPT来辅助知识学习

目录 概念解说 简易教学 深度教学 教学与测验 解释一个主题的背后原理 总结 在当今信息时代,互联网的快速发展为我们获取知识提供了前所未有的便利。而其中,人工智能技术的应用也为我们的学习和交流带来了新的可能性。作为一种基于自然语言处理的人…

(css)点击前隐藏icon图表 点击后显示

(css)点击前隐藏icon图表 点击后显示 效果 html <liv-for"(item,index) in sessionList":key"index"class"liClass":class"{ active: change2 index }"tabindex"2">...<el-tooltip class"item" effec…

双驱拖挂底盘的制作分享

1. 运动功能说明 本文示例将实现R331样机双驱拖挂底盘运动的功能。 2. 结构说明 双驱拖挂底盘是一种具有两个驱动轴的车辆底盘&#xff0c;它由两个驱动轴、悬挂系统、转向系统和连接拖车的结构组成。以下是一些关于双驱拖挂底盘的主要特点和优势&#xff1a; ① 强大的牵引能力…

网络基础-PosixAPI

文章目录 一.网络常用接口Linux协议栈与posix api的关系 背景1.1 socket1.8 close服务端posix接口1.2 bind1.3 listen1.4 accept1.5 connect1.6 send1.7 recv总结 二. 修改句柄属性2.1 fctl2.2 特殊作用2.2.1 设置阻塞非阻塞2.2.1 实例2.2.2设置获取记录锁2.2.2 实例 三、文件操…

苹果恢复已删除的照片,3种超实用教程!

【大家帮帮孩子吧&#xff01;去旅游拍的写真不小心被我删掉了&#xff0c;回收站也找不到&#xff0c;有什么办法能恢复回来吗&#xff1f;】 不小心误删了重要照片该怎么办&#xff1f;大家都知道&#xff0c;苹果手机【最近删除】里的照片只能保留30天&#xff0c;超过了这…

CAD版本怎么在线转换?教你在线转换CAD版本方法

CAD文件版本转换通常是由于文件的创建者使用了与接收者不同的CAD软件版本。此外&#xff0c;如果接收者使用的CAD软件版本与创建者使用的版本不兼容&#xff0c;则可能需要进行文件版本转换&#xff0c;以便接收者能够正确地查看和编辑文件。很多小伙伴喜欢在线处理文件格式&am…

《零基础实践深度学习》(第2版)学习笔记,(五)深度学习与计算机视觉

文章目录 1. 计算机视觉概述2. 图像分类3. 目标检测 1. 计算机视觉概述 图像分类 目标检测 2. 图像分类 3. 目标检测

Guitar Pro8专业版吉他学习、绘谱、创作软件

Guitar Pro 8 专业版更强大&#xff01;更优雅&#xff01;更完美&#xff01;Guitar Pro 8.0 五年磨一剑&#xff01;多达30项功能优化&#xff01;Guitar Pro8 版本一共更新近30项功能&#xff0c;令吉他打谱更出色&#xff01;Guitar Pro8 是自2017年4月发布7.0之后发布的最…

独立游戏开发者的工具栈【Lumnis作者】

作为一名单人游戏开发者&#xff0c;需要成为多面手。 如果你想避免委托给承包商&#xff0c;需要身兼数职&#xff0c;并精通艺术、编程、游戏设计、音乐创作、营销等&#xff0c;具体取决于你制作的游戏。 学习所有这些需要时间和练习&#xff0c;但也需要金钱。 大多数游戏…

thread 的join方法

join方法的底层执行&#xff1f; 看如测试用例&#xff1a; -> 两个红色的框分别说明了sleep方法前后test01的状态&#xff0c;这个不是重点&#xff0c;只是一个验证而已。 重要的是test02的状态&#xff0c;调用join方法后&#xff0c;test02变成了WAITING状态&#xff…

每日一题 92反转链表||

题目 给你单链表的头指针 head 和两个整数 left 和 right &#xff0c;其中 left < right 。请你反转从位置 left 到位置 right 的链表节点&#xff0c;返回 反转后的链表 。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5], left 2, right 4 输出&#xff1a;…

冠达管理:股票成交量变小的含义?股价不涨是什么原因?

股票成交量是一个很重要的分析指标&#xff0c;遭到许多出资者的重视。那么股票成交量变小的意义&#xff1f;股价不涨是什么原因&#xff1f;冠达管理也为我们预备了相关内容&#xff0c;以供参考。 股票成交量变小的意义&#xff1f; 股票成交量是指在一定时间内&#xff0c…

2023 ChatGPT 3.5+4.0 + AI智能绘图-设计师专项源码 附安装教程

AI绘图专业设计 不得将程序用作任何违法违纪内容&#xff0c;不要让亲人两行泪 界面部分图解构&#xff1a; 前台show&#xff1a; 后台Show&#xff1a; 前端部署&#xff1a; 安装pm2管理器 点击设置 选择v16.19.1版本-切换版本 再新建一个网站 点击设置 添加反向代…

CSS变形与动画(一):transform变形 与 transition过渡动画 详解(用法 + 代码 + 例子 + 效果)

文章目录 变形与动画transform 变形translate 位移scale 缩放rotate 旋转skew 倾斜多种变形设置变形中心点 transition 过渡动画多种属性变化 变形与动画 transform 变形 包括&#xff1a;位移、旋转、缩放、倾斜。 下面的方法都是transform里的&#xff0c;记得加上。 展示效…

冠达管理:股票估值低为什么好于估值高?如何判断估值?

进行股票交易要掌握一些重要的相关常识&#xff0c;比如对股票估值状况的判别&#xff0c;假如出资者能清楚的得知买入的股票价格是否合适&#xff0c;那对于出资来说是大有益处的。但是&#xff0c;关于估值&#xff0c;会有估值低好于高一说&#xff0c;为什么估值低会好于估…

爬虫:Scrapy热门爬虫框架介绍

专栏介绍 结合自身经验和内部资料总结的Python教程&#xff0c;每天3-5章&#xff0c;最短1个月就能全方位的完成Python的学习并进行实战开发&#xff0c;学完了定能成为大佬&#xff01;加油吧&#xff01;卷起来&#xff01; 全部文章请访问专栏&#xff1a;《Python全栈教…

ROS之rviz显示GNSS/INS运动轨迹

目录 一、显示自定义圆形轨迹 二、显示GNSS/INS轨迹 2.1代码show_path.cpp 2.2CMakeLists.txt 2.3显示效果 一、显示自定义圆形轨迹 参考&#xff1a;&#xff08;九&#xff09;ROS在rviz中实时显示轨迹&#xff08;nav_msgs/Path消息的使用&#xff09;_nav_msgs/path.…

Java:正则表达式案例:爬数据,重复数据替换,数据分割

使用正则表达式查找一段文本中的内容 需求:请把下面文本中的电话&#xff0c;邮箱&#xff0c;座机号码&#xff0c;热线都爬取出来。 String data "电话:1866668888&#xff0c;18699997777\n" "或者联系邮箱: boniuitcast.cn&#xff0c;\n" "座机…