SpringBoot整合RabbitMQ–队列长度–用法/实例

SpringBoot整合RabbitMQ–队列长度–用法/实例本文用示例介绍 SpringBoot 整合 RabbitMQ 时如何处理队列的长度

原文网址:SpringBoot整合RabbitMQ–队列长度–用法/实例_IT利刃出鞘的博客-CSDN博客

简介

说明

        本文用示例介绍SpringBoot整合RabbitMQ时如何处理队列的长度。

Rabbitmq官网

最大长度

粉丝福利:很多粉丝私信问我有没有Java的面试及PDF书籍等资料,我整理了一下,包含:真实面试题汇总、简历模板、PDF书籍、PPT模板等。这些是我自己也在用的资料,面试题是面试官问到我的问题的整理,其他资料也是我自用的,真正实用、靠谱。资料可以从这里免费获取:资料地址

队列长度限制

  • 队列的最大长度可以限制为一组消息数或一组字节数(忽略消息属性和其他开销的所有消息体长度总和),或者两者兼有。
  • 默认情况下,rabbitmq中的queue的最大长度和总字节数不受限制的(仅受全局内存,磁盘阈值的影响)。
  • 对于任何给定的队列,最大长度(任一类型)可以由客户端使用队列的参数来定义,也可以在服务器中使用配置策略(policies)来定义。在策略和参数都指定最大长度的情况下,将应用两个值中的较小值。
  • 队列长度可以使用 operator policies 强制设置。
  • 在所有情况下,都使用 就绪 消息的数量;未确认的消息不计入限制。
  • rabbitmqctl list_queues 中的字段 messages_ready, message_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”:}’ \ 
–apply-to queues




rabbitmqctl on Windowsrabbitmqctl.bat set_policy my-pol “^one-meg$” ^
“{““max-length-bytes””:}” ^
–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 Windowsrabbitmqctl.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 提供一个非负整数值,设置最大字节长度。如果设置了两个参数,那么两个参数都将适用;无论先达到哪个限制,都将强制执行。

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

//创建队列 HashMap 
  
    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://javaforall.net/219508.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 下午10:24
下一篇 2026年3月17日 下午10:24


相关推荐

  • 小草1.3.0

    小草1.3.0VERSION转载于:https://www.cnblogs.com/llw87/p/10149903.html

    2022年6月15日
    40
  • 如何查看JDK版本号

    如何查看JDK版本号如何查看JDK版本号

    2025年11月13日
    6
  • Opcode指令解析

    Opcode指令解析2 1 实模式 保护模式 以及虚拟 8086 模式指令格式 Intel 64 和 IA 32 架构指令编码是图 2 1 所示格式的子集 一条指令包括可选的指令前缀 顺序任意 主操作码 最多 3 字节 由 ModR M 和 SIB 字节 可选 组成的地址格式描述符 如果需要的话 偏移量 可选 以及立即数 可选 前缀 主操作码

    2026年3月20日
    2
  • Java二叉树前序遍历[通俗易懂]

    Java二叉树前序遍历[通俗易懂]给你二叉树的根节点root,返回它节点值的前序遍历。示例1:输入:root=[1,null,2,3]输出:[1,2,3]示例2:输入:root=[]输出:[]示例3:输入:root=[1]输出:[1]示例4:输入:root=[1,2]输出:[1,2]示例5:输入:root=[1,null,2]输出:[1,2]提示:树中节点数目在范围[0,100]内-100<=Node.val<=100进阶:递归算法很简单

    2025年9月23日
    4
  • 【转载】lvs为何不能完全替代DNS轮询

    【转载】lvs为何不能完全替代DNS轮询

    2021年11月20日
    55
  • mkdir命令Linux,mkdir命令在Linux中的应用

    mkdir命令Linux,mkdir命令在Linux中的应用mkdir 命令在 Linux 操作系统中主要用于创建文件夹 且创建的文件夹不能重名 下面小编将给大家介绍下 Linux 中 mkdir 命令的用法 以便你有个了解 1 命令格式 mkdir 选项 目录 2 命令功能 通过 mkdir 命令可以实现在指定位置创建以 DirName 指定的文件名 命名的文件夹或目录 要创建文件夹或目录的用户必须对所创建的文件夹的父文件夹具有写权限 并且 所创建的文件夹 目

    2026年3月16日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号