博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
RabbitMQ Lazy Queue 延迟加载
阅读量:4678 次
发布时间:2019-06-09

本文共 883 字,大约阅读时间需要 2 分钟。

Lazy Queue

在著名的单例设计模式中就有懒汉式的实现方式,也就是只有在你需要的时候我才去加载。

这让博主想到了以前上学的时候,每到了假期的假期作业,在假期的时候是从来不做的。只有在快开学老师要检查的时候才去做,这也是一个懒汉式的体现,哈哈。

而RabbitMQ也是有lazy queue的,queue中的消息存在磁盘只有在consumer来找它要了,才会加载到内存。

下面是官方文档,可以看到去lazy queue的介绍,lazy queue是在3.6.0版本被引入的,lazy queue的信息尽可能的都保存在磁盘上,仅在消费者请求的时候才会加载到RAM中。

使用默认的queue,并且消息不持久化的话,都是放在RAM中的。当消息峰值的时候,大量的消息在RAM导致rabbitmq服务器压力过大,当RAM使用量到一定数字的时候就会因为压力把数据移到硬盘中,但是不要嗨皮,rabbitmq服务器重启后消息一样会丢失。而且过大的压力可能会出现各种各样的异常情况,这并不是我们想要看到的

 

使用lazy queue会有以下几种搭配

lazy queue 消息不持久化 , 但是这种模式还是会把消息放到硬盘里,RAM的使用率会一直很稳定,但是重启后一样会丢失消息

lazy queue 消息持久化,这种方式无疑是最佳搭配,消息放到硬盘并且不会因为服务器重启而丢失,面对高并发也是从容不已

设置lazy queue也很简单,下面代码是一个示例,x-queue-model : lazy

//声明一个懒队列                channel.QueueDeclare("lazyqueue", true, false, false, new Dictionary
{ { "x-queue-mode","lazy"} });

转载于:https://www.cnblogs.com/LiangSW/p/6231178.html

你可能感兴趣的文章
大型网站高并发的架构演变图-摘自网络
查看>>
8丶运行及总结
查看>>
WebApi请求原理
查看>>
[Node.js] node-persist: localStorage on the server
查看>>
jquery.event 研究学习之bind篇
查看>>
LOJ #108. 多项式乘法
查看>>
libusb开发指南
查看>>
SAS基础 -- 逻辑库不存在问题解决
查看>>
Servlet监听器统计在线人数
查看>>
关于手机端IOS系统微信中虚拟键盘遮挡input输入框问题的解决方案 草稿
查看>>
Python--小功能应用
查看>>
[linux-内核][转]内核日志及printk结构浅析
查看>>
程序猿的爱情-2012-01-22
查看>>
CentOS7.2 安装iptables
查看>>
网络是怎样连接的—1.浏览器生成消息
查看>>
codevs1430 素数判定
查看>>
2017年6月2号课堂笔记
查看>>
poj1015【DP.......无奈了】
查看>>
C#性能优化的一些技巧
查看>>
ios坐标位置转换
查看>>