RabbitMQ(十一)队列的扩展属性(Arguments)

目录

一、简介

RabbitMQ 允许用户在声明队列、交换机或绑定时设置 扩展属性 (Arguments),这些扩展属性可以用于 自定义和增强消息处理的行为 。这里我们主要探讨 RabbitMQ 的 队列扩展属性

RabbitMQ 管理界面中的队列扩展属性:


二、队列扩展属性清单

队列扩展属性清单如下:

  • x-dead-letter-exchange:死信交换机。

  • x-dead-letter-routing-key:死信队列的路由键。

  • x-expires:队列在指定毫秒数后被删除。

  • x-message-ttl:队列的消息过期时间,单位为毫秒。

  • x-max-length:队列的消息条数限,限制加入 queue 中消息的条数。(先进先出原则,超过限制后,后面的消息会顶替前面的消息。)

  • x-max-length-bytes:队列的消息容量限制。(该参数和 x-max-length 目的一样,限制队列的容量,但是这个参数是靠队列大小(bytes)来进行限制。)

  • x-max-priority:队列的优先级,最大优先值为 255。

  • x-overflow:设置队列溢出行为。这决定了当达到队列的最大长度时消息会发生什么。有效值是:drop-head、reject-publish、reject-publish-dlx。

  • x-single-active-consumer:表示队列是否是单一活动消费者。

    值为 true 时,注册的消费组内只有一个消费者消费消息,其他被忽略。

    值为 false 时,消息循环分给所有消费者。(默认)

  • x-queue-mode:将队列设置为延迟模式,在磁盘上保留尽可能多的消息,以减少 RAM 的使用。如果未设置,队列将保留内存缓存以尽快地传递消息。

  • x-queue-master-locator:在集群模式下设置镜像队列的主节点信息。

  • x-ha-policy:创建 HA 队列,此参数已失效。

  • x-ha-nodes:HA 队列的分布节点,此参数已失效。

注意: 如果队列不是新建,而是 修改队列的扩展属性启动程序之前需要删除原有队列 。否则会报错:inequivalent arg 'x-dead-letter-exchange'


三、代码示例

3.1 实现方式一:channel.queueDeclare()

示例:声明一个包含扩展属性的队列。

java 复制代码
Map<String, Object> args = new HashMap<>();
args.put("x-message-ttl", 60000); // 消息TTL为60秒
args.put("x-dead-letter-exchange", "myDeadLetterExchange"); // 死信交换机
args.put("x-dead-letter-routing-key", "myDeadLetterRouingKey"); // 死信路由键

channel.queueDeclare("myQueue", true, false, false, args);

3.2 实现方式二:QueueBuilder.build()

示例:声明一个包含扩展属性的队列。

java 复制代码
import org.springframework.amqp.core.Queue;
import org.springframework.amqp.core.QueueBuilder;

Queue queue = QueueBuilder.durable("myQueue")
    					.withArgument("x-message-ttl", 60000) // 消息TTL为60秒
    					.withArgument("x-dead-letter-exchange", "myDeadLetterExchange") // 死信交换机
    					.withArgument("x-dead-letter-routing-key", "myDeadLetterRoutingKey") // 死信路由键
    					.build();

整理完毕,完结撒花~ 🌻

参考地址:

1.RabbitMQ中队列的参数,https://blog.51cto.com/morris131/6216415

相关推荐
深蓝电商API7 小时前
分布式事务在跨境交易中的解决方案
分布式·跨境电商·代购系统·反向海淘·代购平台·跨境代购
我真会写代码11 小时前
从入门到精通:Kafka核心原理与实战避坑指南
分布式·缓存·kafka
黄俊懿12 小时前
【架构师从入门到进阶】第二章:系统衡量指标——第一节:伸缩性、扩展性、安全性
分布式·后端·中间件·架构·系统架构·架构设计
一叶飘零_sweeeet13 小时前
击穿 Kafka 高可用核心:分区副本、ISR 机制与底层原理全链路拆解
分布式·架构·kafka
007张三丰14 小时前
常用缓存技术全方位解析:从本地缓存到分布式缓存
分布式·缓存
tianyuanwo17 小时前
Koji 分布式编译调度机制深度解析:多架构异构节点的资源优化方案
分布式·架构
江沉晚呤时18 小时前
.NET 9 快速上手 RabbitMQ 直连交换机:高效消息传递实战指南
开发语言·分布式·后端·rabbitmq·.net·ruby
Volunteer Technology18 小时前
zookeeper基础应用与实战二
分布式·zookeeper·云原生
姚青&20 小时前
Pytest 测试用例并行运行与分布式运行
分布式·测试用例·pytest
若水不如远方1 天前
分布式一致性(六):拥抱可用性 —— 最终一致性与 Gossip 协议
分布式·后端·算法