RabbitMq高级惰性列队
从RabbitMQ的3.6.0版本开始,就增加了Lazy Queues的概念,也就是惰性队列。惰性队列的特征如下:
接收到消息后直接存入磁盘而非内存
消费者要消费消息时才会从磁盘中读取并加载到内存
支持数百万条的消息存储
解决消息堆积有两种思路:
增加更多消费者,提高消费速度。也就是我们之前说的work queue模式
扩大队列容积,提高堆积上限;要提升队列容积,把消息保存在内存中显然是不行的。
========================
基于命令行设置lazy-queue
而要设置一个队列为惰性队列,只需要在声明队列时,指定x-queue-mode属性为lazy即可。可以通过命令行将一个运行中的队列修改为惰性队列:
rabbitmqctl set_policy Lazy "^lazy-queue$" '{"queue-mode":"lazy"}' --apply-to queues
命令解读:
rabbitmqctl
:RabbitMQ的命令行工具set_policy
:添加一个策略Lazy
:策略名称,可以自定义"^lazy-queue$"
:用正则表达式匹配队列的名字'{"queue-mode":"lazy"}'
:设置队列模式为lazy模式--apply-to queues
:策略的作用对象,是所有的队列
========================================
基于@Bean声明lazy-queue
@Bean public Queue lazyQueue() {return QueueBuilder.durable("lazy.queue").lazy().build(); }
@RabbitListener(queuesToDeclare = @Queue(name = "lazy.queue", durable = "true",arguments = @Argument(name = "x-queue-mode", value = "lazy") )) public void listenDlQueue2(String msg) {log.info("接收到 dl.ttl.queue的延迟消息:{}", msg); }
====================
消息堆积问题的解决方案?
队列上绑定多个消费者,提高消费速度
使用惰性队列,可以再mq中保存更多消息
惰性队列的优点有哪些?
基于磁盘存储,消息上限高
没有间歇性的page-out,性能比较稳定
惰性队列的缺点有哪些?
基于磁盘存储,消息时效性会降低
性能受限于磁盘的IO
RabbitMq高级惰性列队相关推荐
- RabbitMQ(二):RabbitMQ高级特性
RabbitMQ(二):RabbitMQ高级特性 RabbitMQ是目前非常热门的一款消息中间件,不管是互联网大厂还是中小企业都在大量使用.作为一名合格的开发者,有必要了解一下相关知识,RabbitM ...
- RabbitMQ 高级指南:从配置、使用到高可用集群搭建
博主说:在项目中,通过 RabbitMQ,咱们可以将一些无需即时返回且耗时的操作提取出来,进行异步处理,而这种异步处理的方式大大的节省了服务器的请求响应时间,从而提高了系统的吞吐量. 正文 1 Rab ...
- RabbitMQ 高级特性(吐血猝死整理篇)
文章目录 RabbitMQ 高级特性 消息可靠性投递(可靠性发送) 事务机制 代码实现 发送方确认机制 为什么比事务性能好 示例代码 测试一下QPS 持久化存储 TTL 队列 死信队列(DLX) 延迟 ...
- RabbitMQ高级特性-惰性队列
目录 一.消息堆积问题 二.解决消息堆积的三种思路 三.惰性队列 1.命令行修改惰性队列 2.用SpringAMQP声明惰性队列 @Bean的方式 注解方式 测试发送消息 3.惰性队列的优点 4.惰性 ...
- RabbitMQ之惰性队列(Lazy Queue)
欢迎支持笔者新作:<深入理解Kafka:核心设计与实践原理>和<RabbitMQ实战指南>,同时欢迎关注笔者的微信公众号:朱小厮的博客. 欢迎跳转到本文的原文链接:https: ...
- 3 RabbitMQ高级特性 3
主要为大家讲解RabbitMQ的高级特性和实际场景应用, 包括消息如何保障 100% 的投递成功 ? 幂等性概念详解,在海量订单产生的业务高峰期,如何避免消息的重复消费问题? Confirm确认消息. ...
- RabbitMQ高级特性
文章目录 1. 简述 2. 特性示例: 2.1 消息可靠性投递 2.2 Consumer Ack 2.3 消费端限流 2.4 TTL 2.5 死信队列 2.6 延迟队列 1. 简述 在rabbitMQ ...
- RabbitMQ高级之如何保证消息可靠性?
楔子 本篇是消息队列RabbitMQ的第四弹. RabbitMQ我已经写了三篇了,基础的收发消息和基础的概念我都已经写了,学任何东西都是这样,先基础的上手能用,然后遇到问题再去解决,无法理解就去深入源 ...
- 分享笔记RabbitMQ高级之消息限流与延时队列
楔子 本篇是消息队列RabbitMQ的第五弹. 上篇本来打算讲述RabbitMQ的一些高级用法: 如何保证消息的可靠性? 消息队列如何进行限流? 如何设置延时队列进行延时消费? 最终因为篇幅缘故,上篇 ...
最新文章
- C语言:简单而不易懂的声明(二)
- 好好学python·基本数据类型
- 基于动态IP的Internet视频监控解决方案(作者:吴晓晖)
- 用redis实现消息队列
- 美检方或起诉刘强东;百度对呛微信规则;澳洲调查 Facebook | 极客头条
- Vue Cli 打包之后静态资源路径不对的解决方法
- OpenCV(三) 图像的读取和显示
- [C#]巧妙获取正在使用的IPv4地址
- java jad_Java反编译工具 jad安装及使用的指南
- 写在发现谷歌拼音输入法网站消失的今天
- mysql to sqlserver_mysql to sqlserver
- MySQLzip格式安装包
- 群控 云控营销神器代码研究
- ch341a编程和ttl刷机区别_USB转TTL(CH341A)的注意事项及说明 -
- python-opencv文件夹中所有视频按顺序截图片并按顺序命名
- 用户画像如何分析 用户画像如何获取
- atm系统的用例模型_ATM自动取款机用例图.doc-_装配图网
- SonarQube在Windows环境下下载安装,中文包下载安装,mysql配置,maven配置,idea配置,项目配置
- 第 338 场周赛 (力扣周赛)
- .net fileupload批量上传可删除_8uftp上传工具,8uftp上传工具的使用方法只需8步