RabbitMQ 队列消息的条数限制、队列字节长度限制、队列溢出行为方式

2023-11-08

目录

队列长度限制

默认最大队列长度限制行为

队列溢出行为

使用配置定义最大队列长度

在声明队列期间使用 x-arguments 定义最大队列长度(重点阅读即可)


队列长度限制

概述

队列的最大长度可以限制为一组消息数或一组字节数(忽略消息属性和其他开销的所有消息体长度总和),或者两者兼有。

对于任何给定的队列,最大长度(任一类型)可以由客户端使用队列的参数来定义,也可以在服务器中使用配置策略(policies)来定义。在策略和参数都指定最大长度的情况下,将应用两个值中的较小值。

对列长度可以使用 operator policies 强制设置。

在所有情况下,都使用 就绪 消息的数量;未确认的消息不计入限制。

rabbitmqctl list_queues 中的字段 messages_readymessage_bytes_ready 以及管理 API 展示的即为被限制的值。

默认最大队列长度限制行为

当设置了最大队列长度或大小并达到最大值时,RabbitMQ 的默认行为是从队列前面丢弃或 dead-letter 消息(即队列中最早的消息)。要修改这种行为,请使用下面描述的 overflow 设置。

队列溢出行为

使用溢出设置来配置队列溢出行为。如果 overflow 设置为 reject-publish,则最近发布的消息将被丢弃。此外,如果 发布者确认 已启用,将通过 basic.nack 消息对发布者进行拒绝通知。如果一条消息被路由到多个队列并被其中至少一个队列拒绝,该信道将通过 basic.nack 通知发布者。该消息仍将被发布到可以将其排队的所有其他队列。

使用配置定义最大队列长度

要使用配置指定最大长度,请将关键词 max-length 和 / 或 max-length-bytes 添加到配置定义中。例如:

type value
rabbitmqctl rabbitmqctl set_policy my-pol “^one-meg$” \ 
‘{“max-length-bytes”:1048576}’ \ 
--apply-to queues
rabbitmqctl on Windows rabbitmqctl.bat set_policy my-pol “^one-meg$” ^
"{"“max-length-bytes”":1048576}" ^
--apply-to queues

my-pol 策略确保 one-meg 队列包含不超过 1MB 的消息数据。当达到1mB的限制时,最早的消息将从队列头中丢弃。

要定义溢出行为-是从头上删除消息还是拒绝新发布,需要将关键词 overflow 添加到策略定义中。例如:

rabbitmqctl
rabbitmqctl set_policy my-pol "^two-messages$" \
  '{"max-length":2,"overflow":"reject-publish"}' \
  --apply-to queues
rabbitmqctl on Windows
rabbitmqctl.bat set_policy my-pol "^two-messages$" ^
  "{""max-length"":2,""overflow"":""reject-publish""}" ^
  --apply-to queues

my-pol 策略确保 two-messages 队列包含的消息不超过 2 条,并且所有其他发布都是基本发送的。只要队列包含 2 条消息并且发布者确认启用的情况下,其他发送的消息都会得到 basic.nack 响应。

策略配置也可以通过管理插件定义。详细请看 相关文档

在声明队列期间使用 x-arguments 定义最大队列长度(重点阅读即可)

1)为队列声明参数 x-max-length 提供一个非负整数值来设置最大消息条数。

2)声明参数 x-max-length-bytes 提供一个非负整数值,设置最大字节长度。如果设置了两个参数,那么两个参数都将适用;无论先达到哪个限制,都将强制执行。

3)溢出行为可以通过向队列声明参数 x-overflow 提供字符串值来设置。可能的值是:
    drop-head (默认值):从队列前面丢弃或 dead-letter 消息,保存后n条消息
    reject-publish:最近发布的消息将被丢弃,即保存前n条消息。

下面 Java 中的这个示例声明了一个最大长度为10条消息的队列:

   //创建队列
        HashMap<String, Object> map = new HashMap<>();
   //设置队列最大的条数 10条
        map.put("x-max-length",10 );
    //设置队列溢出方式    保留前10条
map.put("x-overflow","reject-publish" );
        channel.queueDeclare(queueName,false,false,false,map);

原文地址 https://www.rabbitmq.com/maxlength.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

RabbitMQ 队列消息的条数限制、队列字节长度限制、队列溢出行为方式 的相关文章

  • VC++ 设定Windows程序自启动(非管理员权限)

    Windows程序自启动方式有很多种 任务计划 注册表 启动项等等 创建任务计划和启动项 都需要程序具有管理员权限才能写入 在此略过 只介绍启动项方式 要实现启动项方式 必须要知道当前用户下启动项方式的目录 我们才好将程序或程序的快捷方式存
  • react 首页加载loading

    首页加载loading 放在 root里面 代码如下
  • C语言学习7——文件操作 文件的打开、读写、关闭 文件指针的使用

    关于C语言文件操作方面的知识 主要涉及到以下几个方面 文件的打开和关闭 文件的读写 文件的定位 下面我将详细讲解每个方面 文件的打开和关闭 在C语言中 需要使用fopen 函数来打开一个文件 该函数的原型如下 FILE fopen cons
  • secureCRT设置按钮栏

    secureCRT通过设置按钮栏可以把许多繁琐的命令简化成一个按钮 一步到位提高工作效率 详情如下 1 img http dl2 iteye com upload attachment 0094 3355 9805c794 f8e6 376
  • Day 5 - 元组字典习题

    1 声明一个字典保存一个学生的信息 学生信息中包括 姓名 年龄 成绩 单科 电话 性别 男 女 不明 stu name xxx age 18 grade 60 tel 12345678 sex 男 女 不明 2 声明一个列表 在列表中保存6
  • java-collection中的null,isEmpty

    只使用java utils包的isEmpty 第一种情况 实例化list 但是size为空 List
  • 【华为机试真题 JAVA】求满足条件的最长子串的长度-100

    编程题目 100分 求满足条件的最长子串的长度 2022 Q1 Q2考试题 时间限制 C C 1000ms 其他语言 2000ms 空间限制 C C 128MB 其他语言 256MB 64bit IO Format lld 本题可使用本地I
  • 一键排序Linux内存占用

    top c 大写M M
  • 华为鸿蒙os系统服务器炸了,华为鸿蒙OS短时间内威胁不到麒麟操作系统和统信UOS系统...

    麒麟操作系统和统信UOS系统是当前国产Linux操作系统的两座大山 它们鼎足而立 麒麟操作系统多用于高端部署 而统信UOS有更强大的Deepin社区支撑 比如麒麟操作系统可用于大型计算机 各类政企终端 而统信UOS受到华为笔记本的青睐 被预
  • 【教程】DGL中的子图分区函数partition_graph讲解

    转载请注明出处 小锋学长生活大爆炸 xfxuezhang cn 目录 函数形式 函数作用 函数内容 函数入参 函数返参 使用示例 实际上官方的函数解释中就已经非常详细了 函数形式 def partition graph g graph na
  • uniapp---- 微信小程序中获取当前地理位置(高德地图)

    uniapp 微信小程序中获取当前地理位置 高德地图 1 在manifest json中选择微信小程序配置 勾选上位置接口 2 在manifest json中选择源码视图 添加permission和requiredPrivateInfos
  • 《effective c++》总结

    文章目录 前言 条款02 尽量以const enum inline替换 define 条款03 尽可能使用const 条款04 确定对象被使用前已先被初始化 条款05 了解c 默默编写并调用哪些函数 条款06 若不想使用编译器自动生成的函数
  • Android开发下遇到的一些奇葩问题处理

    环境 MAC Android Studio Q1 Gradle Home not found 网上查到的解决方案比较少一些 如 gradle wrapper properties 配置错误等等 Solution 我的解决是 无意中点了Run
  • 希沃展台如何使用_视频展台的操作步骤

    键盘控制 1 开启展示台及外围设备 按select键选择信号源 当body指示灯亮时 输出信号为摄像头 当external指示灯亮时 输出信号为外部信号源 开机时默认为摄像头 2 将被演示物放置在展台上 调整摄像头对准被摄物体 3 根据镜头
  • K8S单master部署四:Kubelet+kube-proxy

    服务器角色分配 角色 地址 安装组件 master 192 168 142 220 kube apiserver kube controller manager kube scheduler etcd node1 192 168 142 1
  • 创新实训(21)——推荐算法的评估

    前言 昨天使用Mohout推荐引擎实现了用户的协同过滤算法 今天使用昨天实现的算法计算一下推荐的准确率以及查全率 查准率 算法评判标准 召回率 recall 与查准率 precision A 检索到的 相关的 搜到的也想要的 B 未检索到的
  • uni-app onBackPress 小程序 解决方案 uni-app返回

    onBackPress 只支持APP和H5 但不支持小程序 可以用onUnload生命周期解决 页面销毁的时候执行方法
  • 史上最简单的 SpringCloud 教程

    转载请标明出处 原文首发于 https www fangzhipeng com springcloud 2018 08 30 sc f1 eureka 本文出自方志朋的博客 一 spring cloud简介 鉴于 史上最简单的Spring
  • 2PC算法

    概述 2PC 是Two Phase Commit的缩写 即二阶段提交 主要解决的问题是让基于分布式架构下的所有节点在进行事务处理过程中能够保证原子性和一致性 它的核心思想是 一票否决 提交过程 正如它的名字 它的提交分为两个阶段 第一阶段

随机推荐

  • 测试操作xml文件

    先查出所有的时间 并转换为时间戳 time SELECT ROW NUMBER OVER ORDER BY a SERIAL AS row num a SERIAL a COMMANDID a CELLID a USERID a LIBTI
  • Redis 数据类型 (完整版)

    Redis 数据类型 Redis支持五种数据类型 string 字符串 hash 哈希 list 列表 set 无序集合 zset 有序集合 1 String 字符串 set key value 赋值 get key 取值 127 0 0
  • 十大经典排序算法最强总结

    点击上方 我要学编程 选择 置顶 星标公众号 福利干货 第一时间送达 排序算法属于经典基础算法基本功 笔试面试基本都会涉及和考察的 有原题也有变化 不过基础的几大排序算法还是得尽可能熟悉 能在思路熟悉的前提下手写出代码就更好了 为了防止不提
  • 开源中国 2018 年度榜单之国产新秀榜

    回看 2018 年 无论是国内外 科技公司对 开源 投入的巨大资本不仅令人咋舌 更重要的是 伴随着资本的强势注入 有理由相信 开源 将会有更光明且清晰可见的未来 而开源软件作为其中最重要的一环 除了充分展示 开源 的生态丰富之外 还在某种程
  • Java并发编程学习4-线程封闭和安全发布

    Java并发编程学习系列 线程封闭和安全发布 1 线程封闭 1 1 Ad hoc 线程封闭 1 2 栈封闭 1 3 ThreadLocal 类 2 不变性 2 1 Final 域 2 2 不可变对象的简单示例 3 安全发布 3 1 不正确的
  • 全方位解读Web3域名:DID基石、NFT新增长点

    1 Web3域名在NFT市场整体低迷的背景下表现出色 2 Web3域名有庞大的用户群体和巨大的上升空间 3 Web3域名是用户重要的Web3身份凭证 可使用域名访问全链应用 4 Web3域名长期来看使用大于炒作 今年下半年 Web3域名在N
  • gitlab配置https方式访问

    1 mkdir etc gitlab ssl 创建ssl证书目录 2 上传证书 3 配置gitlab vim etc gitlab gitlab rb external url https cloud cn nginx enable tru
  • hisi Camera 开发--HiMPP媒体处理软件开发基本概念

    1 HIMPP平台架构简介 海思提供的媒体处理软件平台 Media Process Platform 简称 MPP 可支持应用软件快速开发 该平台对应用软件屏蔽了芯片相关的复杂的底层处理 并对应用软件直接提供 MPI MPP Program
  • 基于gensim的Doc2Vec简析,以及用python 实现简要代码

    Doc2Vec 原理 Doc2Vec 或者叫做 paragraph2vec sentence embeddings 是一种非监督式算法 可以获得sentences paragraphs documents 的向量表达 是 word2vec
  • c++基础练习题四

    1 编程实现以下功能 矩形有长a和宽b 现有2个矩形 要求实现矩形相加时可以得到一个新的矩形 它的长为两个矩形的长a相加 宽为两个矩形的宽b和b相加 要求定义类实现 自己设计 可以输出新矩形的长和宽 矩形相加要求使用运算符 重载实现 inc
  • 分布式链路追踪之Spring Cloud Sleuth+Zipkin最全教程

    今天这篇文章陈某介绍一下链路追踪相关的知识 以Spring Cloud Sleuth和zipkin这两个组件为主 后续文章介绍另外一种 文章的目录如下 为什么需要链路追踪 大型分布式微服务系统中 一个系统被拆分成N多个模块 这些模块负责不同
  • 深入理解数据结构——模拟链表

    include
  • Blob数据类型及应用

    JavaScript中有一种专门存放二进制数据的数据类型对象 叫blob 是从HTML5引入的 blob的英文名称为Binary Large Object 即二进制的大型对象 File对象继承自blob对象 并有一些额外的拓展功能 创建方法
  • 什么是渗透测试呢?

    随着信息技术的不断发展 网络安全威胁也日益增加 黑客 病毒 恶意软件等攻击手段层出不穷 给个人 组织甚至整个国家的安全造成了严重威胁 而渗透测试作为网络安全防御的关键环节 通过模拟真实攻击场景 揭示潜在的漏洞和安全隐患 评估现有的防御措施是
  • pipline发布代码

    1 创建流水线任务 2 自定义流水线语法 3 在流水线语法中自动生成语法结构 也可以直接写shell语句
  • 线性dp(背包)、树形dp、区间dp,板子+典型问题+例题

    线性dp 01背包问题 核心板子 for int v 0 v lt x v f v 0 w i 为重量 c i 为价值 x为重量上限 for int i 1 i lt n i for int v x v gt w i v f v max f
  • java.net.UnknownHostException: www.xxx.com: Name or service not known的某种情况

    我一般只记录不是网上给出的大众答案 很明显很多人搜到的结论是 修改服务器hosts文件 vi etc hosts 添加记录行 127 0 0 1 www xxx com 这只是把这个无法识别的域名映射到本地了 有点掩耳盗铃 我是真的需要访问
  • c++学习之模板

    函数模板 1 c 有一种编程思想称为泛型编程 主要利用的技术就是模板 2 c 提供两种模板机制 函数模板和类模板 函数模板的语法 函数模板的作用 建立一个通用函数 其函数返回值类型和形参类型可以不具体的指定 用一个虚拟的类型来代表 语法 t
  • switch语句

    switch语句格式 格式 switch 表达式 case值1 语句体1 break case值2 语句体2 break default 语句体n 1 break 执行流程 首先计算表达式的值 依次和case后面的值进行比较 如果有对应的值
  • RabbitMQ 队列消息的条数限制、队列字节长度限制、队列溢出行为方式

    目录 队列长度限制 默认最大队列长度限制行为 队列溢出行为 使用配置定义最大队列长度 在声明队列期间使用 x arguments 定义最大队列长度 重点阅读即可 队列长度限制 概述 队列的最大长度可以限制为一组消息数或一组字节数 忽略消息属