RabbitMQ之Queue(队列)属性解读

这篇具有很好参考价值的文章主要介绍了RabbitMQ之Queue(队列)属性解读。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

​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 HeadReject 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)、给消息加上优先级属性 通过优先级特性,将一个队列实现插队消费;

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,有三种可供选择的策略:文章来源地址https://www.toymoban.com/news/detail-837389.html

  • (1)min-masters:选择master queue数最少的那个服务节点host;
  • (2)client-local:选择与client相连接的那个服务节点host;
  • (3)random:随机分配;

到了这里,关于RabbitMQ之Queue(队列)属性解读的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 201、RabbitMQ 之 Exchange 典型应用模型 之 工作队列(Work Queue)

    工作队列: 就是让多个消费者竞争消费同一个消息队列的消息,相当于多个消费者共享消息队列。 ▲ RabbitMQ可以让多个消费者竞争消费同一个消息队列 ▲ 消息队列默认会将消息“均分”给每个消费者,但这样做往往并不合适: 因为有的消费者需要更多时间处理一条消息,

    2024年02月07日
    浏览(37)
  • RabbitMQ inequivalent arg ‘x-message-ttl‘ for queue x in vhost ‘/‘:received the value x of type问题解决

    Caused by: com.rabbitmq.client.ShutdownSignalException: channel error; protocol method: #methodchannel.close(reply-code=406, reply-text=PRECONDITION_FAILED - inequivalent arg \\\'x-message-ttl\\\' for queue \\\'xudongmaster.dlx.queue\\\' in vhost \\\'/\\\': received the value \\\'60000\\\' of type \\\'long\\\' but current is none, class-id=50, method-id=10) 1、修改了死信队列的x-

    2024年02月15日
    浏览(94)
  • 使用RabbitMQ时:Failed to declare queue(s):[XXX]

    一些遇到的错误,小总结 问题描述 Failed to declare queue(s):[XXX] 在SpringBoot中使用RabbitMQ时,遇到了如题目所示的错误 即,队列创建失败。 方案总结 首先,在RabbitMQ的管理页面中,检查看看有没有要用的队列。 如果有要用的 看看名字是否对的上,就 提示创建失败的队列和要用的

    2024年02月15日
    浏览(65)
  • [中间件] RabbitMQ 的 Exchange 和 Queue 绑定:实现高效消息传递的关键步骤

    前言: 当今大多数分布式系统都需要进行异步消息传递,而 RabbitMQ 作为开源的消息队列系统,提供了一个高效的消息传递方案。但是在使用 RabbitMQ 进行消息传递时,如何正确绑定 Exchange 和 Queue 是十分重要的。本文将从 RabbitMQ Exchange 和 Queue 的定义、Exchange 和 Queue 绑定的目

    2024年04月15日
    浏览(34)
  • RabbitMQ 之 Work Queues 工作队列

    目录 一、轮训分发消息 1、抽取工具类 2、启动两个工作线程 3、生产者代码 4、结果展示 二、消息应答 1、概念 2、自动应答 3、消息应答的方法 4、Multiple 的解释  5、消息自动重新入队 6、消息手动应答代码 (1)生产者 (2)消费者 (3)结果展示 三、RabbitMQ 持久化 1、概念

    2024年02月03日
    浏览(48)
  • springboot rabbitmq Failed to check/redeclare auto-delete queue(s).

    最后一个最容易被忽略 出现这种清空有很多种可能,逐个排除。 一、rabbitmq没安装成功,这个没什么好说的,重装 《重装rabbitmq参考链接》 二、服务器防火墙端口未开放5672和15672 开放5672端口 开放15672 web管理页面端口 重启防火墙 三、springboot错误链接rabbitmq端口15672(正确端

    2024年02月07日
    浏览(55)
  • springboot连接rabbitmq报错:Failed to check/redeclare auto-delete queue(s).

    springboot项目使用 spring-boot-starter-amqp 连接rabbitmq时出现报错: 这类问题是因为没有连接上rabbitmq导致的,一般可以的原因有如下几种: 1、springboot中的配置文件配置的不对,这其中又分为: (1)配置项格式出错,比如yml格式常见的配置项错位 (2)rabbitmq地址错误 (3)端口错

    2023年04月08日
    浏览(36)
  • RabbitMQ异常之inequivalent arg ‘x-message-ttl‘ for queue ‘‘ in vhost ‘/‘

    rabbitmq参数异常 如果遇到此错误,有可能是客户端消费的时候未设置\\\"x-message-ttl\\\"参数,或设置的与服务器上的不一至导至的。 解决方法: 在服务器上查询参数值 配置rabbitmq时加入 或者

    2024年02月04日
    浏览(36)
  • RabbitMQ之Exchange(交换机)属性及备用交换机解读

    目录 基本介绍 主要结论 备用交换机  springboot代码实战(备用交换机) 实战架构 工程概述 RabbitConfigDeal 配置类:创建队列及交换机并进行绑定  MessageService业务类:发送消息及接收消息 主启动类RabbitMq01Application:实现ApplicationRunner接口 在 RabbitMQ 中,交换机主要用来将生产

    2024年02月02日
    浏览(49)
  • 【C++】——栈和队列(stack、queue)及优先队列(priority_queue)的介绍和模拟实现

    今天我们来学习C++stl六大组件的其中一种,容器适配器,stack、queue及priority_queue都是容器适配器。我们循序渐进,接下来让我们先认识一下什么是容器适配器。 适配器是一种设计模式(设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结),该

    2024年02月08日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包