RabbitMQ基础核心概念

news2024/12/24 9:01:45

目标:

了解RabbitMQ的核心概念


学习步骤:

1、模型概念
2、Producer (生产者) 、 Consumer(消费者)
3、Exchange (交换机)
4、Queue (消息队列)
5、Broker(服务节点)
6、RabbitMQ的五种工作模式

一、模型概念

在这里插入图片描述

说白了,RabbitMQ 就是一个生产者与消费者模型,其功能主要是【接收、存储和转发消息】,也可以称为一个使用队列来通信的组件。

二、 Producer(生产者) 、 Consumer(消费者)

Producer(生产者) :顾名思义是生产消息的一方

Consumer(消费者) :顾名思义是消费消息的一方

而消息一般由 俩部分组成:消息头(标签 Label)和 消息体(payload)。

消息体也叫 payLoad ,其内容是不外传的。
而消息头则由一系列的可选属性组成,这些属性包括

  • routing-key(路由键)
  • priority(优先级)
  • delivery-mode(用于做消息持久化)。

Producer 把消息交由 RabbitMQ 后,RabbitMQ 会根据消息头把消息发送给合适的 Consumer

三、Exchange(交换机)

生产者发送的消息都需要经过交换机才能到达合适的消费者,且交换机只负责转发消息,不具备存储消息的能力,假设没有任何队列与交换机绑定,或者没有符合路由规则的队列,发的消息就很可能会丢失。

说细节一点的话就是 Exchange用来接收生产者发送的消息并将这些消息路由给服务器中的队列中,如果找不到对应的路由

  • 情况一是:消息返回给 Producer。
  • 情况二是:消息直接被丢弃掉 。

关于Exchange 有4种类型,不同的类型对应着不同的路由策略,分别是:

在这里插入图片描述

  • direct (定向,也叫路由模式 - 默认)

    • 交换机 会把消息 路由到那些 Bindingkey 与 RoutingKey 完全匹配的 Queue 中
    • 应用场景:direct 类型常用在处理有优先级的任务,根据任务的优先级把消息发送到对应的队列,这样可以指派更多的资源去处理高优先级的队列。
      在这里插入图片描述
  • fanout (广播,也称订阅模式)

    • 交换机 会把所有发送到该 Exchange的消息 路由到所有与它绑定的Queue中,fanout 类型是所有的交换机类型里面速度最快的
      在这里插入图片描述
  • topic (通配)

    • topic类型的交换机在匹配规则上进行了扩展,RoutingKey 为一个点号“.”分隔的字符串,BindingKey 也是点号“.”分隔的字符串
    • BindingKey 中有两种特殊字符串*#,用于模糊匹配,其中*用于匹配一个单词,#用于匹配零个或多个单词
      在这里插入图片描述
  • headers (参数匹配)

    • 它不依赖于路由键的匹配规则来路由消息 ,而是根据发送的消息内容中的 headers 属性进行匹配
    • 它在绑定队列和交换机时指定一组键值对,当发送消息到交换机时,RabbitMQ会获取到该消息的 headers,对比其中的键值对是否完全匹配队列和交换机绑定时指定的键值对,如果完全匹配则消息会路由到该队列,否则不会路由到该队列
    • headers 类型的交换机性能很差,不太实用

注:BindingKey 并不是在所有的情况下都生效,它依赖于交换机类型,比如 fanout类型的交换机就会无视(路由键为空字符串),将消息路由到所有绑定到该交换机的队列中

四、Queue(消息队列)

Queue 是用来保存消息 发送给消费者的一个消息容器(内部对象)。一个消息可投入一个或多个队列。消息会一直待在队列里,等待消费者连接到这个队列将消息取走

五、Broker(服务节点)

一个broker 其实就是相当于一个RabbitMQ服务实例。

六、RabbitMQ的五种工作模式

1、简单模式

在这里插入图片描述

2、work 工作模式

在这里插入图片描述
在这里插入图片描述

3、pub/sub 发布订阅模式

在这里插入图片描述

4、Routing 路由模式

在这里插入图片描述

5、Topic 通配模式

在这里插入图片描述

五种工作模式总结

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/417328.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

OldWang带你了解MySQL(八)

文章目录🔥聚合函数🔥AVG 和 SUM 函数🔥MIN 和 MAX 函数🔥COUNT 函数🔥数据分组(GROUP BY)🔥在多列上使用分组🔥约束分组结果(HAVING)🔥子查询🔥单行子查询🔥…

4月数据结构面试复习

目录 字节数 (278条消息) 数据结构保研面试题整理(自用)_推免面试数据结构问题_乌鸡摸鱼的博客-CSDN博客 https://zhuanlan.zhihu.com/p/138046349https://zhuanlan.zhihu.com/p/255030352计算机数据结构面试常问问题(适合考研复试&#xff…

Redis7

Redis之父安特雷兹 Redis7概述 Redis:Remote Dictionary Server(远程字典服务)是完全开源的,使用ANSIC语言编写遵守BSD协议,是一个高性能的Key-Value数据库提供了丰富的数据结构,例如String、Hash、List、Set、SortedSet等等。数据是存在内…

云原生个人线路 Docker容器化

声明:此文章为博主个人学习记录,仅供学习和交流,如有侵权请联系博主。 Docker 基于Linux 内核的Cgroup,Namespace,以及Union FS等技术,对进程进行封装隔离,属于操作系统层面的虚拟化技术&#x…

Windows权限提升—MySQL数据库提权

Windows权限提升—MySQL数据库提权1. 前言2. 数据库提权介绍2.1. 常见数据库端口2.2. MySQL数据库提权条件2.3. MySQL数据库提权类型3. MySQL中UDF提权3.1. UDF提权介绍3.2. UDF提权思路3.3. UDF提权步骤3.3.1. 获取外连数据库3.3.1.1. 外连数据库3.3.1.2. 连接数据库3.3.1.3. …

python+vue 基于推荐算法的在线电影视播放网站

以广大影视剧迷们为研究对象,深入了解影视剧迷对在线视频观看视频的需求进行分析,形成系统需求分析设计一个符合影视剧迷们需求的在线视频网站。设计网站的前期工作包括对系统的各个功能进行详细分析,对数据库设计进行详细的描述,…

hadoop之MapReduce框架原理

目录 MapReduce框架的简单运行机制: Mapper阶段: InputFormat数据输入: 切片与MapTask并行度决定机制: job提交过程源码解析: 切片逻辑: 1)FileInputFormat实现类 进行虚拟存储 &#x…

9.Nuxt.js的使用

九.Nust.js的使用 1.什么是SEO 2.百度的搜索结果 3.服务器端和客户端渲染 4.Nuxt.js技术简介 5.Nuxt.js的路由(使用提供的nuxt-app项目初始化) 6.Nuxt.js的页面布局和整体配置 7.Nuxt.js整合axios 九.Nust.js的使用 1.什么是SEO ①SEO SEO是通…

elasticSearch数据存储与搜索基本原理

1.缘起: 为啥想学习es,主要是在工作中会用到,但是因为不了解原理,所以用起来畏手畏脚的,就想了解下es是怎么存储数据,以及es是怎么搜索数据的,我们平时应该如何使用es,以及使用时候…

springboot+jwt令牌简单登录案例

1. 什么是JWT?JSON Web Token JSON Web Token (JWT)是⼀个开放标准(RFC 7519),它定义了⼀种紧凑的、⾃包含的⽅式,⽤于 作为JSON对象在各⽅之间安全地传输信息。该信息可以被验证和信任,因为它是数字签名的。 1.1 什么时候应该⽤…

【Linux】应用层协议—http

🎇Linux: 博客主页:一起去看日落吗分享博主的在Linux中学习到的知识和遇到的问题博主的能力有限,出现错误希望大家不吝赐教分享给大家一句我很喜欢的话: 看似不起波澜的日复一日,一定会在某一天让你看见坚持…

DevData Talks | 微众银行有哪些研发效能实践与思考?一起来拓展认知边界!

本期 DevData Talks 直播活动中,我们非常高兴地邀请到了微众银行研发效能负责人余伟老师与我们分享微众银行在研发效能实践方面的经验与方法。 微众银行是一家面向互联网的银行,从诞生之日起就一直致力于快速迭代、稳健可靠的业务支持。面对金融和互联网…

ORACLE EBS 系统架构与应用实践(二)

四、ORACLE EBS的系统集成性 这里的所谓系统“集成性”,既非指“技术层面”的集成,也非指模块“应用层面”的集成,而是指企业管理发展过程中内在“核心要素”的集成。有人以为,一个ERP产品所包含的模块数量足够多、企业上线的模块…

【大数据基础】基于信用卡逾期数据的Spark数据处理与分析

https://dblab.xmu.edu.cn/blog/2707/ 实验过程 数据预处理 本次实验数据集来自和鲸社区的信用卡评分模型构建数据,以数据集cs-training.csv为分析主体,其中共有15万条记录,11列属性。 每个数据包含以下字段: 字段名称 字段含义…

【PyTorch】第四节:梯度下降算法

作者🕵️‍♂️:让机器理解语言か 专栏🎇:PyTorch 描述🎨:PyTorch 是一个基于 Torch 的 Python 开源机器学习库。 寄语💓:🐾没有白走的路,每一步都算数&#…

java--HtmlUnit--模拟浏览器操作--自动化操作浏览器--自动登录校园网为案例

写在前面: 闲来无事,因为宿舍每次嫌登录校园网有点免费。然后想着能不能一键自动化实现。然后更麻烦了,哈哈哈。不过倒是写一次代码就可以了。 可能不是特别系统,因为资料太少了。都是案例驱动找的资料。花了3大节课才搞完了。 会…

Redis运维之swap影响及解决方案

一、操作系统SWAP swap空间对于操作系统来说比较重要,当我们使用操作系统的时候,如果系统内存不足,常常会将一部分内存数据页进行swap操作,以解决临时的内存困境。swap空间由磁盘提供,对于高并发场景下,sw…

全球土壤湿度数据获取方法

土壤湿度亦称土壤含水率,表示土壤干湿程度的物理量。是土壤含水量的一种相对变量。通常用土壤含水量占干土重的百分数是示,亦称土壤质量湿度,如用土壤水分容积占土壤总容积的百分数表示,则称土壤容积湿度。通常说的土壤湿度&#…

Vivado中VIO IP核的使用

Vivado中VIO IP核的使用一、写在前面二、VIO IP核配置三、VIO联调四、写在后面一、写在前面 Vivado中的VIO(Virtual Input/Output) IP核是一种用于调试和测试FPGA设计的IP核。它允许设计者通过使用JTAG接口读取和写入FPGA内部的寄存器,从而检…

【JavaEE】关于synchronized总结-Callable用法及JUC的常见问题

博主简介:想进大厂的打工人博主主页:xyk:所属专栏: JavaEE初阶synchronized原理是什么?synchronized到底有什么特点,synchronized的锁策略是什么,是怎么变化的呢?本篇文章总结出, Synchronized 具有以下特性…