RabbitMQ初步到精通-第二章-RabbitMQ介绍

news2025/8/13 14:38:01

第二章 RabbitMQ介绍

1、RabbitMQ简介

RabbitMQ 是一个由 Erlang 语言开发的 AMQP 的开源实现。RabbitMQ最初起源于金融系统,用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。

rabbit- 兔子,兔子的特点是什么? 轻盈,跳跃,灵活,速度快,也象征着这款MQ的特征-轻量级,高性能,所以起个好听的名字也很重要。

此文字为官网中对mq的介绍,这里重点是broker -按翻译意思是中间人、代理人也就是中介的意思,大家想,其实mq就是对消息处理的一个中介一个代理而已,A->queue->B , 像不像大家去买房租房找中介的场景,A与B不再交互,而是通过一个中间人的角色,A把消息给queue,queue把消息推给B,或B来queue去取。message broker= 消息代理, 那rabbitmq 也就是个消息代理中间件。

推荐大家读官网介绍:

官网:Messaging that just works — RabbitMQ 

2、AMQP 简介

 那rabbitmq 遵循的协议是AMQP。

AMQP :Advanced Message Queue Protocol,高级消息队列协议。它是应用层协议的一个开放标准,为面向消息的中间件设计,基于此协议的客户端与消息中间件可传递消息,并不受产品、开发语言等条件的限制。

如何证明呢?为什么说rabbitmq交互就使用了AMQP协议,我们可以使用 WrieShark 抓包看看:

大家也可以去下载对应的协议文档,做一次研读,例如我们常用的AMQP0-9-1

AMQP下载地址:AMQP Working Group 0-9-1 | AMQP

wireshark:Wireshark · Go Deep.

2、RabbitMQ架构

2.1 rabbitmq 模块内容

如上图相关模块介绍如下:

  • 生产者(Producer):发送消息的应用。
  • 消费者(Consumer):接收消息的应用。
  • 队列(Queue):存储消息的缓存。
  • 消息(Message):由生产者通过RabbitMQ发送给消费者的信息。
  • 连接(Connection):连接RabbitMQ和应用服务器的TCP连接。
  • 信道(Channel):连接里的一个虚拟通道,通过消息队列发送或者接收消息时,都是通过信道进行的。
  • 交换机(Exchange):交换机负责从生产者那里接收消息,并根据交换类型分发到对应的消息队列里。
  • 绑定(Binding):绑定是队列和交换机的一个关联连接。
  • 路由键(Routing Key):路由键是供交换机查看并根据键来决定如何分发消息到队列的一个键,路由键可以说是消息的目的地址。
  • 代理(Broker):接收和分发消息的应用,RabbitMQ Server就是Message Broker。
  • 虚拟主机(Virtual host):出于多租户和安全因素设计的,把AMQP的基本组件划分到一个虚拟的分组中,类似于网络中的namespace概念。当多个不同的用户使用同一个RabbitMQ server提供的服务时,可以划分出多个vhost,每个用户在自己的vhost创建exchange/queue 等。

2.2 rabbitmq工作原理

  1. 生产者与服务器建立Connection链接
  2. 在Connection 链接内创建信道Channel
  3. 生产者通过信道把消息发送给交换机
  4. 交换机接收消息并且负责对消息进行路由,交换机根据消息的属性来把消息分发到不同的队列上;
  5. 消息会一直留在队列里直到被消费者消费

所以这里的重点是生产者将消息发送给了交换机,并非直接发到queue,而通过不同的交换机能实现不同的效果。后续介绍的重点就是此处。

【当创建交换机时需要指定类型(四种类型:直接Direct,扇出Fanout ,主题Topic ,消息头Headers )】

2.3 rabbitmq模型

对于初学者,大家可能对这些概念容易混淆也不太好记忆,为了便于大家理解,我做了个模型。大家都对太阳能热水器不陌生吧,有没有觉得上面的mq架构图,用这个热水器来理解。

有没有很贴切,哈哈,^_^,咱们从左往右看

  • Producer=水龙头 -水龙头给热水器上水  
  • Message = 水
  • Connection = 保温层,冬天怕冻,我们先套一层保温
  • Channel=pvc 管,这是直接走水的,也是创建在保温层里面的
  • Exchange= 上水开关-加个开关多层控制
  • Queue=热水器桶 -保存水 先进的水先出去
  • Consumer=淋浴器-小明可以痛快洗澡了

打开水龙头上水,小明直接洗冷水澡,存着水晒热后,小明再洗热水澡

3、RabbitMQ安装

rabbitmq安装不再重点介绍,此步骤需要将mq安装到本地或服务器即可。

另外配置好对应的用户,配置好使用的Virtual Host,为后续程序的连接做好准备!

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

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

相关文章

图解https读书笔记

7.确保Web安全的HTTPS 7.2 HTTP 加密 认证 完整性保护 HTTPS https http ssL(Secure socket layer)client: 使用servcer端的publickey对消息加密-----》server:收到消息,用privatekey进行解密参考:彻底搞懂HTTPS的加密原理_峰子2012的博…

VS+QT错误集合

主要是使用VSQT时遇到等一些问题,现在使用等是VS2015(专业版) QT5.13.1 这章主要解决遇到的无法解析等外部符号这类问题 1、LNK2001 无法解析的外部符号 "public: virtual struct QMetaObject const * __cdecl Process::metaObject…

【分析笔记】Linux 4.9 backlight 子系统分析

相关信息 内核版本:Linux version 4.9.56 驱动文件:lichee\linux-4.9\drivers\video\backlight\backlight.c 驱动作用 对上,面对应用层提供统一的设备节点入口同级,面对驱动层提供设备驱动加载卸载通知事件,以及背光…

闲人闲谈PS之三十二——业务工程预算和PS成本计划

惯例闲话:年底,又要开始忙了,今年这一年,收获还不错,至少规划了第三年实现的目标——工程行业彩虹图,在今年居然奇迹般的实现了,看样子闲人还是保守了。还是应验了那句话,只要标准化…

React插槽

在开发中,我们抽取了一个组件,但是为了让这个组件具备更强的通用性,我们不能将组件中的内容限制为固定的div、span等等这些元素。我们应该让使用者可以决定某一块区域到底存放什么内容。这里可以使用插槽。 而在React中,我们可以通…

Spring Cloud Circuit Breaker 使用示例

Spring Cloud Circuit Breaker 使用示例 作者: Grey 原文地址: 博客园:Spring Cloud Circuit Breaker 使用示例 CSDN:Spring Cloud Circuit Breaker 使用示例 说明 Spring Cloud Circuit breaker提供了一个跨越不同断路器实现…

留学Essay写作怎么注意具体结构?

留学生都知道Essay一般分为Introduction,Main Body和Conclusion这三个部分,Introduction说明了文章的整体内容,但本身并没有提出任何论点;Conclusion通常简要地概括了正文的要点,并建议进一步研究给出一些或结论性的想法&#xff…

Springboot实现ENC加密

目录1. 为什么要用ENC加密2. jasypt实现ENC加密1. 实现流程2. 说明1. 自定义加密秘钥1. 盐、前缀、后缀2. 自定义加密方案2. 部署方案1. 为什么要用ENC加密 以下是未经过加密的数据库配置,密码均是采用明文密码,很容易导致数据库泄露。 spring:datasou…

gitlab 简单优化 gitlab cpu高,内存高 gitlab 负载飙高

1.首先要说得是,优化不能解决根本问题,机器小水管,再优化还是不行。 我感觉4核8g应该可以,截图这机器是阿里云送的免费一个月 4核8g 内存,不知是不是送得问题,感觉也是hold不住。 负载逛逛升,8…

【springboot】19、数据库操作

文章目录基本说明默认数据源HikariDataSource切换数据源为Druid基本说明 这篇文章介绍如何在springboot的项目中进行数据库的连接,完成数据库操作。 默认数据源HikariDataSource HikariDataSource是springboot的默认数据源,性能十分优秀,我…

【Hack The Box】windows练习-- love

HTB 学习笔记 【Hack The Box】windows练习-- love 🔥系列专栏:Hack The Box 🎉欢迎关注🔎点赞👍收藏⭐️留言📝 📆首发时间:🌴2022年9月7日🌴 &#x1f36d…

【freeRTOS】操作系统之四-事件标志组

事件标志组是实现多任务同步的有效机制之一。 ​ 搞个全局变量不是更简单?其实不然,在裸机编程时,使用全局变量的确比较方便,但是在加上 RTOS 后就是另一种情况了。 使用全局变量相比事件标志组主要有如下三个问题: …

人工智能 AI 绘画 AI绘制的图片 ? 简介的版权,以及如何使用图像生成AI 绘画 ?

人工智能 AI 绘画 AI绘制的图片 ? 简介的版权,以及如何使用图像生成AI 绘画 ? 我认为,许多人认为工作的绘画是人类独有的。 然而,在最新的,大赦国际还可以在工作的绘画和绘画创作大赦国际已经生一个接一个。和有些人感到惊奇的…

Docker从入门到精通,一文详解

一、Docker简介 1、背景 物理机时代 一个物理机上安装操作系统,然后直接运行我们的软件。也就是说你电脑上直接跑了一个软件,并没有开虚拟机什么的,资源极其浪费。 缺点 部署慢成本高 虚拟机都不开,直接上物理机部署应用&#x…

libusb系列-006-Qt下使用libusb1.0.9源码

libusb系列-006-Qt下使用libusb1.0.9源码 文章目录libusb系列-006-Qt下使用libusb1.0.9源码摘要添加宏添加源文件编译文件测试libusb工程源码关键字: Debian、 Linux、 Qt、 libusb、 源码内容背景: 最近项目终于切到Linux下开发了,所以最近的…

生产者消费者问题实践(头歌实验)第1关:生产者消费者问题实践,第2关:进程互斥和同步。

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 题目: 第1关:生产者消费者问题实践 任务: 相关知识 代码: 效果截图: 第2关:进程互斥和同步…

Linux的命令行

命令行的格式 command [-options] [parameter] options和parameter并不是每一个的命令都需要的 ls命令 直接的ls 查看当前文件目录下的所有文件以及文件夹 ls -a 查看所有的同时,查看隐藏的文件,在Linux中以.开头的文件都会被隐藏起来 ls -l 以…

【Java学习笔记】第四章 面向对象编程三部曲(上)

【Java学习笔记】第四章 面向对象编程三部曲(上) 【Java学习笔记】第四章 面向对象编程三部曲(中) 【Java学习笔记】第四章 面向对象编程三部曲(下) 文章目录4.面向对象编程(上)4.…

Kafka 插件并创建 Kafka Producer 发送

相关说明 启动测试前清空所有数据。每次测试先把所有数据写入 Kafka,再加载 Kafka 插件同步数据到 DolphinDB 中。目的是将同步数据的压力全部集中到 Kafka 插件。以 Kafka 插件从收到第一批数据到收到最后一批数据的时间差作为同步数据的总耗时。 测试流程 加载 …

公网远程连接内网Everything实现快速搜索私有云文件

企业外派出差,已经是稀松平常的事,通常出差的同事都会带一个优盘或移动硬盘。但优盘和硬盘是离线设备,所存储的文件数据无法及时更新,因此能够连接公司主机获得最新文件才是出差的首选。可是公司主机位于内网,且面对浩…