当前位置: 首页 > news >正文

【图解RabbitMQ-3】消息队列RabbitMQ介绍及核心流程

🧑‍💻作者名称:DaenCode
🎤作者简介:CSDN实力新星,后端开发两年经验,曾担任甲方技术代表,业余独自创办智源恩创网络科技工作室。会点点Java相关技术栈、帆软报表、低代码平台快速开发。技术尚浅,闭关学习中······
😎人生感悟:尝尽人生百味,方知世间冷暖。
📖所属专栏:图解RabbitMQ


在这里插入图片描述


专栏推荐

  • 专门为Redis入门打造的专栏,包含Redis基础知识、基础命令、五大数据类型实战场景、key删除策略、内存淘汰机制、持久化机制、哨兵模式、主从复制、分布式锁等等内容。链接>>>>>>>>>《Redis从头学》
  • SpringBoot实战相关专栏,包含SpringBoot过滤器、拦截器、AOP实现日志、整合Freemaker、整合Redis等等实战相关内容,多篇文章登入全站热榜、领域热榜、被技术社区收录。链接>>>>>>《SpringBoot实战》

文章目录

  • 专栏推荐
  • 🌟前言
  • 🌟RabbitMQ是什么?
  • 🌟特点
  • 🌟核心组件
  • 🌟核心流程
  • 🌟写在最后

🌟前言

在上一节中学习了JMS消息服务与AMQP协议。了解了这两大消息传递技术,这一节就学习基于AMQP协议实现的RabbitMQ消息中间件是什么?RabbitMQ的架构图是怎样的?以及RabbitMQ中的核心组件。


🌟RabbitMQ是什么?

以下解释来源于百度百科:

RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)。RabbitMQ服务器是用Erlang语言编写的,而集群和故障转移是构建在开放电信平台框架上的。所有主要的编程语言均有与代理接口通讯的客户端库。

个人理解:

基于AMQP协议实现的消息中间件,采用Erlang语言编写。

架构图:
在这里插入图片描述


🌟特点

  1. 跨平台、多语言支持。基于AMQP协议实现。
  2. 支持分布式
  3. 可以与SpringAMQP进行整合
  4. 易于管理。提供了web管理页面用来监控和管理消息队列。
  5. 消息可靠性。RabbitMQ内部有消息可靠性投递机制,避免消息中途的丢失。

🌟核心组件

对于核心组件的位置,可以参照架构图。
在这里插入图片描述

  • Broker:相当于一个MQ节点。
  • Producer:生产者。创建消息并发送到Broker中。
  • Consumer:消费者。监听Queue中的消息并消费。
  • Message:消息。数据对象,有消息头和消息体。
  • Queue:消息的载体。负责存储消息。
  • Channel:信道。支持多路复用,建立在生产者与broker、broker与消费者之间的虚拟连接。
  • Connection:一个连接上可以有多个Channel。
  • Exchange:交换机。生产者将消息发送给交换机,交换机负责使用binding_key绑定交换机与队列。
  • RoutingKey:路由键。消息的路由规则。
  • Binding:通过routingkey与bingding_key的规则,绑定交换机与队列。
  • Virtual Host:虚拟主机。虚拟的电脑,用来分离不同的业务逻辑模块或者环境。

🌟核心流程

  1. Producer创建消息并发送到Broker。
    • Producer与Broker建立连接Connection。
    • 在Connection中创建信道Channel。
    • Producer声明一个交换机Exchange,用于接受消息Message并将它们路由到正确的Queue。
    • Producer选择一个RoutingKey,用于指定Exchange与哪个Queue进行绑定。
    • Producer发送消息到Exchange。
    • 关闭Channel。
    • 关闭Connection。
  2. Broker中的Exchange接收到消息后,根据RoutingKey规则路由到正确的Queue。
  3. Exchange与Queue通过Bingding绑定。
  4. Queue按照先进先出存储消息和处理消息。
  5. 消费者从队列中消费消息Message。
    • Consumer与Broker建立连接Connection。
    • 在Connection创建信道Channel。
    • Consumer通过ACK机制确认并消费消息。
    • Queue中删除被消费的消息。
    • 关闭Channel。
    • 关闭Connection。

🌟写在最后

有关于消息队列RabbitMQ基本介绍到此就结束了。在本文中对RabbitMQ的基本概念做出了介绍,并配合架构图对其核心组件进行了总结。

非常感谢大家的阅读,对于学习过程中遇到的问题,希望大家在评论区对此部分内容散发讨论,便于学到更多的知识。


请添加图片描述

相关文章:

【图解RabbitMQ-3】消息队列RabbitMQ介绍及核心流程

🧑‍💻作者名称:DaenCode 🎤作者简介:CSDN实力新星,后端开发两年经验,曾担任甲方技术代表,业余独自创办智源恩创网络科技工作室。会点点Java相关技术栈、帆软报表、低代码平台快速开…...

jmeter源码二次开发

本文以jmeter5.5为例,扩展“TCP Socket支持定长的返回字节流”功能。 一、 源码本地编译运行 1、在jmeter官网下载源码:jmeter各版本源码地址 2、在idea中用gradle导入jmeter源码,idea中要配置jdk,gradle,我用的是j…...

深入实现 MyBatis 底层机制的任务阶段4 - 开发 Mapper 接口和 Mapper.xml

😀前言 在我们的自定义 MyBatis 底层机制实现过程中,我们已经深入研究了多个任务阶段,包括配置文件的读取、数据库连接的建立、执行器的编写,以及 SqlSession 的封装。每个任务阶段都为我们揭示了 MyBatis 内部工作原理的一部分&a…...

分享一下在微信上有哪些微信活动可以做

微信营销活动是吸引更多用户和提高品牌知名度的有效策略。下面是一些微信营销活动的做法: 抽奖活动:通过设置奖品和参与条件,吸引用户参与抽奖活动。例如,可以设置关注公众号、转发活动页面等条件,吸引更多用户参与抽奖…...

视频监控/视频汇聚/视频云存储EasyCVR平台接入国标GB协议后出现断流情况,该如何解决?

视频监控汇聚平台EasyCVR可拓展性强、视频能力灵活、部署轻快,可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等,以及支持厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等。安防监控平台EasyCVR既具备传统安防视频监控的能…...

没有软件怎么管理固定资产

在当今数字化的世界中,我们已经习惯了使用各种软件来管理我们的日常生活和工作。然而,当我们面临一个看似简单的问题——如何管理固定资产时,我们可能会感到困惑。那么,如果没有软件,我们该如何进行资产管理呢&#xf…...

几种反序列化漏洞

1.PHP魔术方法 <?php class c {private $name hacker;function __construct() { // 构造方法&#xff0c;new时调用echo construct<br>;}function __serialize() { // 序列化时调用echo serialize<br>;return [hack];}function __unserialize($data) { // 反…...

华为OD机试 - 找出符合要求的字符串子串(Java 2023 B卷 100分)

目录 专栏导读一、题目描述二、输入描述三、输出描述四、解题思路五、Java算法源码六、效果展示1、输入2、输出 华为OD机试 2023B卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试&#xff08;JAVA&#xff09;真题&#xff08;A卷B卷&#xff09;》…...

深度学习环境搭建笔记(二):mmdetection-CPU安装和训练

文章目录 第一步&#xff1a;安装anaconda第二步&#xff1a;安装虚拟环境第三步&#xff1a;安装torch和torchvision第四步: 安装mmcv-full第五步: 安装mmdetection第六步&#xff1a;测试环境第七步&#xff1a;训练-目标检测7.1 准备数据集7.2 检查数据集7.3 训练网络 第一步…...

Ubuntu18.04安装cuDNN

注册账号 https://developer.nvidia.com/rdp/cudnn-archive 该网站下载安装包需要先进行注册。登录成功后&#xff0c;找到与CUDA对应的版本。 选择Linux版本进行下载。 下载后的格式为.tar.xz 解压 tar xvJf cudnn-linux-x86_64-8.9.3.28_cuda12-archive.tar.xz配置环境 su…...

Java逻辑控制

目录 一、顺序结构 二、分支结构 1、if语句 &#xff08;1&#xff09; 语法格式1​编辑 &#xff08;2&#xff09;语法格式2​编辑 &#xff08;3&#xff09;语法格式3 2、switch 语句 三、循环结构 1、while循环 2、break 3、continue 4、for 循环 5、do whil…...

easyExcel合并单元格导出

一、导入maven依赖 &#xff08;很多旧项目自定义了一套Excel导出工具&#xff0c;poi版本可能不兼容&#xff0c;一般poi新旧版本不兼容分界线在3.17&#xff0c;选择3.17版本不会发生代码不兼容情况&#xff09; <dependency><groupId>com.alibaba</groupId&…...

SpringBoot项目--电脑商城【用户注册】

1.创建数据表 1.1 创建t_user表 CREATE TABLE t_user (uid INT AUTO_INCREMENT COMMENT 用户id,username VARCHAR(20) NOT NULL UNIQUE COMMENT 用户名,password CHAR(32) NOT NULL COMMENT 密码,salt CHAR(36) COMMENT 盐值,phone VARCHAR(20) COMMENT 电话号码,email VARCH…...

HCIP学习-IPv6

目录 前置学习内容 IPv6解决的一些IPv4的缺陷 无限的地址 层次化的地址结构 即插即用 简化报文头部 IPv4和IPv6报头比较 端到端的网络罗完整性 安全性增强 挣钱QoS特性 IPv6地址介绍 格式 首选格式 压缩格式 内嵌IPv4地址格式的IPv6地址格式 IPv6的网络前缀和接…...

golang高精度十进制数扩展包decimal用法

在Go语言中&#xff0c;没有内置的十进制数&#xff08;decimal&#xff09;类型或相关的标准库。然而&#xff0c;有一些第三方包可用于处理十进制数&#xff0c;其中比较常用的是decimal包。 decimal包提供了一个big.Float的子类型decimal.Decimal&#xff0c;可以用于表示和…...

STM32F4X RNG随机数发生器

STM32F4X RNG随机数发生器 随机数的作用STM32F4X 随机数发生器RNG控制寄存器RNG状态寄存器RNG数据寄存器RNG数据步骤RNG例程 随机数的作用 随机数顾名思义就是随机产生的数字&#xff0c;这种数字最大的特点就是其不确定性&#xff0c;你不知道它下一次产生的数字是什么。随机…...

5、QT中SQLite数据库的操作

一、QT中的SQLite数据库 1、添加头文件和模块 Header: #include <QSqlDatabase> qmake: QT sql//pro文件添加sql模块执行数据库操作的类&#xff1a; Header: #include <QSqlQuery> qmake: QT sql2、C语言中的SQLite增删减查 SQLite3的基础教程 3、SQLite的…...

git回退到某个提交

git是一个分布式版本控制软件&#xff0c;分布式版本库的做法使源代码的发布和交流都极为方便&#xff0c;因此有不少用户都在使用git。最近小编也正在学习git这款软件&#xff0c;发现要想熟练运用git&#xff0c;学会git中的一些命令是很重要的&#xff0c;如果我们要回滚到某…...

对可再生能源和微电网集成研究的新控制技术和保护算法进行基线和测试及静态、时域和频率分析研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…...

Full authentication is required to access this resource解决办法

我们在使用postman调接口时候&#xff0c;有的时候需要权限才可以访问&#xff0c;否则可能会报下面这个错误 {"success": false,"message": "Full authentication is required to access this resource","code": 401,"result&q…...

解锁3大技术场景:PptxGenJS自动化演示文稿实战指南

解锁3大技术场景&#xff1a;PptxGenJS自动化演示文稿实战指南 【免费下载链接】PptxGenJS Create PowerPoint presentations with a powerful, concise JavaScript API. 项目地址: https://gitcode.com/gh_mirrors/pp/PptxGenJS 在数字化办公与开发领域&#xff0c;演示…...

应对复杂代码库学习难题:AI驱动的智能分析工具

应对复杂代码库学习难题&#xff1a;AI驱动的智能分析工具 【免费下载链接】Tutorial-Codebase-Knowledge Turns Codebase into Easy Tutorial with AI 项目地址: https://gitcode.com/gh_mirrors/tu/Tutorial-Codebase-Knowledge 在快速发展的技术环境中&#xff0c;开…...

awk实战:从基础语法到高效文本处理技巧

1. 为什么你应该掌握awk文本处理 第一次接触awk是在处理服务器日志的时候&#xff0c;当时我需要从几GB的访问日志中统计每个IP的出现次数。同事随手写了个awk命令&#xff0c;一行代码就解决了让我头疼半天的问题。从那时起&#xff0c;我就把这个"文本处理瑞士军刀&quo…...

保姆级教程:用C++和Eigen库手搓一个URDF机器人正解器(以Franka Panda为例)

从零实现URDF机器人正解器&#xff1a;C与Eigen实战指南&#xff08;Franka Panda案例&#xff09; 机械臂末端执行器的精准定位是机器人控制的基础。本文将带你用C和Eigen库&#xff0c;不依赖ROS等框架&#xff0c;从零构建一个完整的URDF解析与正运动学计算系统。我们会以F…...

IC版图工程师的日常:用Magic/Cadence画版图时,那些图层到底对应FAB里的哪一步?

IC版图工程师的日常&#xff1a;揭秘Magic/Cadence图层与FAB工艺的映射关系 作为一名IC版图工程师&#xff0c;每天面对Magic或Cadence工具中那些五颜六色的图层时&#xff0c;你是否曾好奇过&#xff1a;这些抽象的几何图形最终如何在硅片上变成真实的晶体管结构&#xff1f;A…...

ESP32+MQ-2烟雾传感器实战:用MicroPython打造智能家居报警系统(附完整代码)

ESP32MQ-2烟雾传感器实战&#xff1a;用MicroPython打造智能家居报警系统 智能家居安全系统的核心在于实时感知环境异常并及时响应。烟雾检测作为家庭防火的第一道防线&#xff0c;其可靠性和响应速度直接关系到人身财产安全。本文将手把手教你如何用ESP32开发板和MQ-2气体传感…...

松江少儿英语口碑好的?

松江少儿英语口碑好的 环球乐学少儿英语&#xff0c;指出幼儿英语学习三大痛点&#xff1a; 1. 兴趣不足易抵触&#xff1a;教学形式枯燥&#xff0c;多以机械记单词、跟读为主&#xff0c;不符合幼儿认知特点&#xff0c;易产生厌学情绪。 2. 缺语境不会运用&#xff1a…...

VS2019报错找不到ucrtbased.dll?3种修复方法实测有效(附文件下载)

VS2019报错找不到ucrtbased.dll&#xff1f;3种修复方法实测有效&#xff08;附文件下载&#xff09; Visual Studio 2019是微软推出的强大集成开发环境&#xff0c;但在使用过程中&#xff0c;不少开发者会遇到"找不到ucrtbased.dll"的报错问题。这个错误通常发生在…...

OpenClaw技能市场巡礼:ollama-QwQ-32B支持的10个高效自动化模块

OpenClaw技能市场巡礼&#xff1a;ollama-QwQ-32B支持的10个高效自动化模块 1. 为什么需要技能市场&#xff1f; 当我第一次接触OpenClaw时&#xff0c;最让我惊喜的不是它能操控鼠标键盘的能力&#xff0c;而是它背后那个充满可能性的技能市场。作为一个长期被重复性工作困扰…...

QGIS插件开发实战:手把手教你用Python调用高德地图API做路径规划(附坐标转换避坑指南)

QGIS插件开发实战&#xff1a;Python集成高德地图API的路径规划全流程解析 当我们需要在QGIS中实现路径规划功能时&#xff0c;高德地图API提供了丰富的服务接口。本文将带你从零开始&#xff0c;开发一个能够调用高德地图API进行路径规划的QGIS插件&#xff0c;并重点解决开发…...