首页 > 其他分享 >RabbitMQ知识总结(基本原理+高级特性)

RabbitMQ知识总结(基本原理+高级特性)

时间:2024-08-03 10:26:43浏览次数:17  
标签:优先级 队列 基本原理 特性 存活 RabbitMQ 监听 消息

文章收录在网站:http://hardyfish.top/

文章收录在网站:http://hardyfish.top/

文章收录在网站:http://hardyfish.top/

文章收录在网站:http://hardyfish.top/

在这里插入图片描述

基本原理

消息的可靠性投递

RabbitMQ 消息的投递路径为:

  • 生产者 ------> 交换机 ------> 队列 ------> 消费者

在 RabbitMQ 工作的过程中,每个环节消息都有可能传递失败,可以通过以下三种模式来监听消息时候投递成功:

  • 确认模式(Confirm):可以监听消息是否从生产者成功传递到交换机。

  • 退回模式(Return):可以监听消息是否从交换机成功传递到队列。

  • 消费者消息确认(Consumer Ack):可以监听消费者是否成功处理消息。

高级特性

消费端限流

RabbitMQ 提供了一种 Qos(Quality Of Service,服务质量)服务质量保证功能。

即在非自动确认消息的前提下,如果一定数目的消息未被确认之前,不再进行消费新的消息。

通过消费端限流的方式限制消息的拉取速度,达到保护消费端的目的。

不公平分发

在 RabbitMQ 中,多个消费者监听同一条队列,则队列默认采用的轮询分发。

但是在某种场景下这种策略并不是很好,例如消费者1 处理任务的速度非常快,而其他消费者处理速度却很慢。

  • 此时如果采用公平分发,则消费者1 有很大一部分时间处于空闲状态。
  • 此时可以采用不公平分发,即谁处理的快,谁处理的消息多。

消息存活时间

可以设置消息的存活时间(Time To Live,简称TTL),单位是毫秒,当消息到达存活时间后还没有被消费,会被移出队列。

RabbitMQ 可以对队列的所有消息设置存活时间,也可以对某条消息设置存活时间。

  • 消息到达存活时间未被消费时,消息会被放入死信队列。

优先级队列

RabbitMQ 优先级队列(Priority Queue)是一种特殊的队列,它根据消息的优先级将其放置在队列中。

当消费者从队列中获取消息时,它将按照优先级从高到低的顺序获取消息。

优先级队列可以用于处理一些需要按照优先级处理的消息,例如日志记录、任务调度等。

标签:优先级,队列,基本原理,特性,存活,RabbitMQ,监听,消息
From: https://blog.csdn.net/qq_35508033/article/details/140886662

相关文章

  • 深入理解PHP8的新特性:如何高效使用异步编程和代码
    PHP8是PHP编程语言的最新主要版本,带来了许多令人兴奋的新特性和改进。其中最突出的特性之一是对异步编程的支持。异步编程允许我们在处理并发任务时提高性能和响应能力。本文将深入探讨PHP8的异步编程特性,并介绍如何高效地使用它们。首先,让我们了解一下什么是异步编程。在传统的......
  • 利用 Oracle 19c 新特性 from service 修复备库 GAP
    转发自:https://mp.weixin.qq.com/s/Jz8lEQ6QAnjoTeErbX0q_g前 言相信我们DBA在OracleDataGuard环境中遇到过因主库归档空间有限,归档日志又没有备份,空间满的时候直接删除了归档,导致丢失归档日志,而备库还没有及时接收到这个归档,导致备库出现了GAP现象。因为日志的中断,备......
  • Java/SpringCloud/RabbitMq/无感实现消息携带用户信息 --- 逻辑讲解、代码实现、图形
    一、需求:依据黑马商城hmall为例,用户下单创建订单后,交易服务trade-service向交换机topic发送消息,交换机topic路由到队列,购物车服务cart-service监听此队列,实现自动清空购物车。改造下单功能,将基于OpenFeign的清理购物车同步调用,改为基于RabbitMQ的异步通知:定义t......
  • .NET使用RabbitMQ发送消息
    usingRabbitMQ.Client;usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;namespaceCommon{publicclassRabbitMQSender{privatestaticRabbitMQSenderinstance;pr......
  • html5十大特性
       HTML5总体比HTML4多了十个新特性,但其不支持IE8及IE8以下版本的浏览器。语义化标签表单功能视频和音频Canvas绘图SVG绘图地理定位拖放APIWebWorkerWebStorageWebSocket1、语义化标签结构化元素 HTML5提供的新元素可以更好的描述网页文档结构,比如: 其他......
  • rabbitmq单节点部署
    一:前置条件需要安装erlang#注意安装方式需要科学网络,不适用于离线安装1:配置erlang安装条件curl-shttps://packagecloud.io/install/repositories/rabbitmq/erlang/script.rpm.sh|sudobash2:安装erlangyuminstall-yerlang3:检查erlang版本erl-v二:安装RabbitMQ1......
  • 手写MyBatis 重要基本原理框架
    1.手写MyBatis重要基本原理框架@目录1.手写MyBatis重要基本原理框架1.1第一步:IDEA中创建模块1.2第二步:资源工具类,方便获取指向配置文件的输入流1.3第三步:定义SqlSessionFactoryBuilder类1.4第四步:分析SqlSessionFactory类中有哪些属性1.5第五步:定义JDBCTransaction1.6......
  • RabbitMQ
    什么是消息队列消息队列是一种用于在应用程序之间传递消息的通信方式,消息队列允许应用程序异步地发送和接收消息,并且不需要直接连接到对方;消息是指在应用间传送的数据。消息可以非常简单,比如只包含文本字符串,也可以更复杂,可能包含嵌入对象;队列可以说是一个数据结构,可以存储......
  • 一文带你了解CAP的全部特性,你学会了吗?
    目录前言消息发布携带消息头设置消息前缀原生支持的延迟消息并行发布消息事务消息事务消息发送事务消息消费事务补偿消息处理序列化过滤器消息重试多线程处理自动恢复/重连分布式存储锁消息版本隔离优化的雪花算法消息自动清理消费者特性Attribute订阅多Attribute订阅通配符订阅......
  • Rocky Linux - RabbitMQ
    RabbitMQ1MQ的基本概念RabbitMQ是一个开源的消息代理和队列服务器,它使用Erlang语言编写并运行在多种操作系统上,如Linux、Windows等。RabbitMQ可以接收、存储和转发消息(也称为“事件”)到连接的客户端。它适用于多种场景,包括异步通信、流量削峰、应用解耦等。1.1同步和异......