RabbitMq消息堆积问题及惰性队列

2023-11-06

消息堆积问题

当生产者发送消息的速度超过了消费者处理的速度,就会导致队列的消息堆积,知道队列存储消息达到上限。最早接受的消息,可能就会成为死信,会被丢弃,这就是消息堆积问题。

在这里插入图片描述

解决消费对接问题

1.增加更多的消费者,提高消费者速度
2.在消费则内开启线程池加快消息处理速度
3.使用惰性队列,扩大队列容积,提高堆积上限

惰性队列

rabbitmq3.6.0 版本开始,新增了Lazy Queues概念,也就是惰性队列。

惰性队列的特征如下:

  • 接收的消息后直接存入磁盘而非内存
  • 消费者要消费消息时才会从磁盘中读取并加载到内存中
  • 支持数百万的消息存储

普通的队列会设置一个预警值默认40% 当队列到了40%时,mqBroker 会阻止生产者发送消息。并将队列中消息持久化到磁盘。等腾出空间了再接收消息。所以mq的性能是一个不稳定,波浪形的。 而惰性队列呢在接收消息后会直接写到磁盘,所以不会触发队列的存储预警,性能具有稳定性,延迟性。

正因为惰性队列支持百万的消息存储,所以用它来解决消息堆积问题再好不过了。

惰性队列的实现
1.运行中队列变为惰性队列
在这里插入图片描述

2.直接声明队列为惰性队列

在这里插入图片描述

惰性队列的优点有哪些?

  • 基于磁盘存储,消息上限高
  • 米有间歇性的page-out,性能比较稳定

惰性队列的缺点有哪些

  • 基于磁盘存储,消息时效性会降低
  • 性能受限于磁盘的IO
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

RabbitMq消息堆积问题及惰性队列 的相关文章

随机推荐

  • keil中添加STC单片机

    目前的keil4数据库里面没有STC的数据库 每次都要替换 现在教大家一种方法 我试过的最有效的方法 在不改变原有库的情况下添加STC的数据库 1 把下载的文件解压 复制到keil安装文件下的UV4里 例如E Keil UV4 2 更改ke
  • Java基础语法结构

    顺序结构 java的基本结构就是顺序结构 除非特别指明 否则就是按从上到下执行 顺序结构是最简单的算法结构 顺序结构的程序语句只能被执行一次 如果您想要同样的操作执行多次 就需要使用循环结构 顺序结构是任何一个算法都离不开的一种基本算法结构
  • Vuex详解,一文彻底搞懂Vuex

    一 Vuex是什么 为什么要用它 vuex官方解释 Vuex 是一个专为 Vue js 应用程序开发的状态管理模式 库 它采用集中式存储管理应用的所有组件的状态 并以相应的规则保证状态以一种可预测的方式发生变化 大家可以思考一下 组件之间的
  • java中常用的参数校验方法

    欢迎访问个人博客 德鲁大叔撸代码 在对外开放接口的时候 我们每次需要对调用者传进来的参数进行校验 对于少量并且参数简单的接口 我们完全可以用最原始的方法进行校验 比如 public User selectUser User user log
  • Paddle OCR数据集制作

    PPOCRLabelv2是一款适用于OCR领域的半自动图形标注工具 内置PP OCR模型 自动检测和重新识别数据 用Python3和PyQT5编写 支持矩形框 表格 不规则文本和关键信息标注方式 标注可以直接用于PP OCR检测识别模型的训
  • 【Java学习笔记】Scanner类中next系列方法的总结

    之前在学习Java的时候在如何通过键盘输入数据方面遇到了一些困难 当时有很多概念不理解 现在我把当时在网上看过的一些文章思路总结一下 其中可能有我个人的一些错误理解 希望大佬们指正 毕竟我还是个菜鸡 o 这里就用最典型的三个方法来进行讲解
  • 抽象工厂模式(创建型)

    抽象工厂模式 定义 Provide an interface for creating families of related or dependent objects without specifying their concrete c
  • OpenCV2 椒盐噪声

    椒盐噪声是由图像传感器 传输信道 解码处理等产生的黑白相间的亮暗点噪声 椒盐噪声往往由图像切割引起 我们用程序来模拟椒盐噪声 随机选取一些像素 把这些像素设为白色 include
  • wazuh介绍

    1 wazuh简介 Wazuh 是一个免费 开源和企业级的安全监控解决方案 用于威胁检测 完整性监控 事件响应和合规性 github地址 https github com wazuh Wazuh由部署到受监视系统的端点安全代理和管理服务器组
  • 基于 OpenOCD 的 STM32CubeIDE 开发烧录调试环境搭建-DAPLINK

    STM32cubeIDE 是ST官方推出的一款用于开发 STM32 的工具 整合了 STM32CubeMX 和 TrueSTUDIO 而成 对于 STM32 的开发这个工具应该会在未来成为主流 毕竟有官方加持又商用免费 但仿真烧录只支持 J
  • 快速排序的三种实现方式

    目录 1 Hoare版本 第一步 第二步 第三步 Hoare图解 Hoare代码 2 挖坑法 第一步 第二步 第三步 挖坑法图解 挖坑法代码 3 前后指针版本 第一步 第二步 第三步 前后指针版本图解 前后指针法代码 优化 时间复杂度 最好
  • linux系统 mysql 5.7.27安装

    1 下载mysql 5 7 27 linux glibc2 12 x86 64 tar gz https dev mysql com downloads mysql 5 7 html downloads 或者命令下载 wget https
  • python 类的继承与重载

    gt gt gt class human age 0 sex height 0 weight 0 name def init self age sex height weight self age age self sex sex self
  • Sui流动性质押黑客松|本周Workshop预告

    Sui流动性质押黑客松正在如火如荼的报名中 Sui基金会现诚邀全球开发者前来参与 助力资产再流通 了解黑客松详情 Sui流动性质押黑客松开启报名 赢取千万美金质押和奖励 黑客松官网 Sui Liquid Staking Hackathon
  • 小程序如何获取手机系统相关信息

    小程序如何获取手机系统信息的方法是 调用 wx getSystemInfo 此接口 通过此接口 可以获取到手机的品牌 型号 像素比 操作系统等信息 微信小程序代码举例 wx getSystemInfo model true 获取手机型号 s
  • Upload-labs-master-Pass-02通关教程——类型绕过

    注意 刷题的时候记得清理之前上传的文件 以免出现干扰 1 先上传准备好的mm php 2 查看代码它对文件的类型进行了查看 3 使用Burp Suit来结束数据包并修改文件类型 然后转发后进入链接 成功绕过 这一关数据文件类型绕过
  • react 数据监听

    监听组件传递的值 componentWillReceiveProps newProps 参数为给组件传递的参数 监听组件内部状态的变化 componentDidUpdate prevProps prevState 参数分别为改变之前的数据状
  • SSH_Unable to negotiate with 192.168.1.152 port 22: nomatching host host key type found. Their offer...

    操作环境 Kali Linux 终端远程登录ssh时 提示如下错误 Unable to negotiate with 192 168 1 152 port 22 nomatching host host key type found The
  • [Python http.server] 搭建http服务器用于下载/上传文件

    动机 笔者需测试bs架构下的文件上传与下载性能 故想通过Python搭建http服务器并实现客户端与服务器之间的文件上传和下载需求 难点 这应该是很基础的东西 不过笔者之前未接触过http编程 谨在此记录下学习的过程 可能不是最优解 方法
  • RabbitMq消息堆积问题及惰性队列

    消息堆积问题 当生产者发送消息的速度超过了消费者处理的速度 就会导致队列的消息堆积 知道队列存储消息达到上限 最早接受的消息 可能就会成为死信 会被丢弃 这就是消息堆积问题 解决消费对接问题 1 增加更多的消费者 提高消费者速度 2 在消费