前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >RabbitMQ之Queue(队列)属性解读

RabbitMQ之Queue(队列)属性解读

作者头像
一个风轻云淡
发布2023-10-20 09:34:44
5160
发布2023-10-20 09:34:44
举报
文章被收录于专栏:java学习java

​Queue(队列)是RabbitMQ的内部对象,用于存储消息队列,并将它们转发给消费者; ​ 

RabbitMQ中的Queue(队列)是消息的缓冲区,用于存储待处理的消息。它是RabbitMQ中最基本的消息传递模型。Queue具有以下特点:

  •     队列是消息的容器:队列用于存储待处理的消息,消息按照先进先出(FIFO)的顺序进行处理。
  •     队列是有界的:队列具有最大容量限制,当队列已满时,新的消息将无法进入队列,直到队列中的消息被消费或被手动删除。
  •     队列是持久化的:队列中的消息可以被持久化到磁盘上,以防止消息丢失。当RabbitMQ服务器重启时,持久化的消息将被恢复。
  •     队列是可配置的:队列可以通过设置不同的属性进行配置,例如队列的名称、是否持久化、是否自动删除等。

主要可配置的属性如下: 

​Type:队列类型Name:队列名称,就是一个字符串,随便一个字符串就可以;

Durability:声明队列是否持久化,代表队列在服务器重启后是否还存在;

Auto delete: 是否自动删除,如果为true,当没有消费者连接到这个队列的时候,队列会自动删除;

Exclusive:exclusive属性的队列只对首次声明它的连接可见,并且在连接断开时自动删除;基本上不设置它,设置成false ​

Arguments:队列的其他属性,例如指定DLX(死信交换机等);

1、x-expires:Number 当Queue(队列)在指定的时间未被访问,则队列将被自动删除;

2、x-message-ttl:Number 发布的消息在队列中存在多长时间后被取消(单位毫秒);

3、x-overflow:String 设置队列溢出行为,当达到队列的最大长度时,消息会发生什么,有效值为Drop Head或Reject Publish;

4、x-max-length:Number 队列所能容下消息的最大长度,当超出长度后,新消息将会覆盖最前面的消息,类似于Redis的LRU算法;

5、 x-single-active-consumer:默认为false 激活单一的消费者,也就是该队列只能有一个消息者消费消息;

6、x-max-length-bytes:Number 限定队列的最大占用空间,当超出后也使用类似于Redis的LRU算法;

7、x-dead-letter-exchange:String 指定队列关联的死信交换机,有时候我们希望当队列的消息达到上限后溢出的消息不会被删除掉,而是走到另一个队列中保存起来;

8.x-dead-letter-routing-key:String 指定死信交换机的路由键,一般和6一起定义;

9.x-max-priority:Number

如果将一个队列加上优先级参数,那么该队列为优先级队列;

(1)、给队列加上优先级参数使其成为优先级队列 x-max-priority=10【0-255取值范围】 (2)、给消息加上优先级属性 通过优先级特性,将一个队列实现插队消费;

代码语言:javascript
复制
MessageProperties messageProperties=new MessageProperties(); 
  messageProperties.setPriority(8);

10、x-queue-mode:String(理解下即可) 队列类型x-queue-mode=lazy懒队列,在磁盘上尽可能多地保留消息以减少RAM使用,如果未设置,则队列将保留内存缓存以尽可能快地传递消息;

11、x-queue-master-locator:String(用的较少,不讲) 在集群模式下设置队列分配到的主节点位置信息; 每个queue都有一个master节点,所有对于queue的操作都是事先在master上完成,之后再slave上进行相同的操作; 每个不同的queue可以坐落在不同的集群节点上,这些queue如果配置了镜像队列,那么会有1个master和多个slave。 基本上所有的操作都落在master上,那么如果这些queues的master都落在个别的服务节点上,而其他的节点又很空闲,这样就无法做到负载均衡,那么势必会影响性能; 关于master queue host 的分配有几种策略,可以在queue声明的时候使用x-queue-master-locator参数,或者在policy上设置queue-master-locator,或者直接在rabbitmq的配置文件中定义queue_master_locator,有三种可供选择的策略:

  • (1)min-masters:选择master queue数最少的那个服务节点host;
  • (2)client-local:选择与client相连接的那个服务节点host;
  • (3)random:随机分配;
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-10-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档