(一)RabbitMQ实战——rabbitmq的核心组件及其工作原理介绍

前言

RabbitMQ是一个开源的消息代理软件,它实现了高级消息队列协议(AMQP)标准,提供可靠的消息传递机制。RabbitMQ可以用于在应用程序之间传递消息,实现不同应用系统之间的解耦和通信。它支持多种编程语言,并提供了丰富的功能和插件,使得开发者能够更轻松地构建分布式系统。RabbitMQ支持多种开放标准协议,包括AMQP 1.0和MQTT 5。

本节内容是对rabbitmq核心组件及其工作原理的介绍,方便我们更加清楚的使用rabbitmq作为消息中间键实现我们具体的业务场景。

正文

使用docker安装一个rabbitmq消息中间键

# latest RabbitMQ 3.13
docker run -it --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3.13-management

 

rabbitmq的核心组件

①Broker(服务器)

  • rabbitmq的服务器,用于存储消息的服务器。

②Exchange(交换机)

  • 用于接收来自生产者的消息,并将这些消息路由到一个或多个与之绑定的队列。

③Queue(队列)

  • 用于存储消息的组件,为防止消息丢失,可持久化存储。

④Binding(绑定关系)

  • 定义了 Exchange 和 Queue 之间的关系,它指定了消息应该如何从 Exchange 路由到相应的队列。

⑤Connection(通信连接)

  • 客户端和RabbitMQ之间的TCP连接,用于消息的发送(生产者)或者消息的接收(发布者)。

⑥Channel(信道)

  • 在连接中创建的虚拟连接,用于执行大部分的 AMQP操作。

⑦Virtual host

  • 一个逻辑概念,它让 RabbitMQ可以在一台物理机上支持多个独立的消息代理实例。

rabbitmq的工作原理

发布消息:生产者producer通过Connection连接与broker服务器建立一个Channel信道,将消息发送给交换机Exchange,交换机通过路由键router-key将不同主题的消息通过路由键转发给消息队列Queue,消息被存储在Queue队列中,默认是内存存储,服务器重启消息会丢失,生产使用一般会开启持久化存储。

消费消息:消费者consumer通过Connection连接与broker服务器建立一个Channel信道,主动拉取或者通过服务器推送来消费消息。

结语

至此,关于rabbitmq的核心组件及其工作原理的内容到这里就结束了,我们下期见。。。。。。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

11.Java---语法总结之一个小项目

图书管理系统 Java学习了很久了,今天将运用之前学习的所有东西整理做个小小的小项目. 1.首先是各种包和操作方法建好 2.然后是项目的大框架搭好 3.然后就开始实现各个部分了 看看最后的运行结果吧! 管理员测试 1.登录&显示图书的运行结果 2.查找&新增图书的运行结…

C goto 语句

C 语言中的 goto 语句允许把控制无条件转移到同一函数内的被标记的语句。 注意:在任何编程语言中,都不建议使用 goto 语句。因为它使得程序的控制流难以跟踪,使程序难以理解和难以修改。任何使用 goto 语句的程序可以改写成不需要使用 goto 语…

安卓逆向 安装frida

1,准备工作 安装adb环境,python最高支持到3.8 2,下载雷电模拟器5.0(安卓是7.0)要64位的 雷电安卓模拟器-手游模拟器安卓版_android手机模拟器电脑版_雷电模拟器官网 3,下载frida服务端(版本要与安卓版本匹配;与客户端版本要一致) 在模拟器查看架构 adb shell getprop ro.pr…

数组和指针笔试题目解析---掌握他们拿下指针魔鬼

目录 一、前言二、一维数组2.1代码2.2分析2.3验证运行结果 三、字符数组3.1代码13.1.1分析3.1.2验证运行结果 3.2代码23.2.1分析3.2.2验证运行结果 3.3代码33.3.1分析3.3.2验证运行结果 3.4代码43.4.1分析3.4.2验证运行结果 3.5代码53.5.1分析3.5.2验证运行结果 3.6代码63.6.1分…

D7805 ——体积小,成本低,性能好

D7805 构成的 5V 稳压电源为输出电压5V,输出电流 1000mA 的稳压电源它由滤波电容 C1,C3,防止自激电容 C2、C3 和一只固定三端稳压器(7805)后级加 LC 滤波极为简洁方便地搭成,输入直流电压范围为 7~35V,此直流电压经过D…

机械女生,双非本985硕,目前学了C 基础知识,转嵌入式还是java更好?

作为单片机项目开发的卖课佬,个人建议,先转嵌入式单片机开发方向,哈哈。 java我也学过,还学过oracle、mysql数据库,只是当时没做笔记,找不好充分的装逼证据了。 从实习通过业余时间,学到快正式毕…

(黑马出品_高级篇_03)SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式

(黑马出品_高级篇_03)SpringCloudRabbitMQDockerRedis搜索分布式 微服务技术——多级缓存 今日目标1.什么是多级缓存2.JVM进程缓存2.1.导入案例2.1.1.安装MySQL2.1.1.1.准备目录2.1.1.2.运行命令2.1.1.3.修改配置 2.1.1.4.…

学编程前需要知道哪些编程语言呢?

编程语言的选择对学习编程的重要性不可低估。不同编程语言各有独特特点和适用场景,合理选择适合自身需求的编程语言能事半功倍。初学者而言,选择一门简洁易读的编程语言如Python,可以快速掌握编程基础原理,轻松编写程序&#xff0…

202003 青少年软件编程(Scratch)等级考试试卷(二级)

第1题:【 单选题】 在以下积木中,( )可以将声音的音量增大 A: B: C: D: 【正确答案】: B 【试题解析】 : 第2题:【 单选题】 如下图所示脚本运行的结果是( ) A:画一条直线 B:画一个三角形 C:画一个圆形 D:画一条虚线 【正确答案】: D 【试题解析】 : 第3…

【新书推荐】26.3 模块间的信息传递

模块间的信息传递主要表现为模块间过程调用时的参数传递。在第十一章介绍的过程调用参数传递原则和方法依然有效。少量的参数可以利用寄存器传递或堆栈传递,大量的参数可先组织在一个缓冲区中,然后利用寄存器或堆栈传递相应的指针。 如果利用约定的存储…

ES分片均衡策略分析与改进

从故障说起 某日早高峰收到 Elasticsearch 大量查询超时告警,不同于以往,查看 Elasticsearch 查询队列监控后发现,仅123节点存在大量查询请求堆积。 各节点查询队列堆积情况 查看节点监控发现,123节点的 IO 占用远高于其他节点。…

CcFrame Logo完成

Compact celerity framework CCFrame:一个快速开发、精简压缩的SAAS微服务后端架构 仅需要一台阿里云2核2G机器即可完整运行平台系统及其所有的运行及数据支持 微服务、远程-本地二级缓存架构、ES索引、队列、分库分表、集群定时器,一个都不能少 谁说2…

基于YOLOv8深度学习的木薯病害智能诊断与防治系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战

《博主简介》 小伙伴们好,我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源,可关注公-仲-hao:【阿旭算法与机器学习】,共同学习交流~ 👍感谢小伙伴们点赞、关注! 《------往期经典推…

【R语言实战】——fGARCH包在金融时序上的模拟应用

🍉CSDN小墨&晓末:https://blog.csdn.net/jd1813346972 个人介绍: 研一|统计学|干货分享          擅长Python、Matlab、R等主流编程软件          累计十余项国家级比赛奖项,参与研究经费10w、40w级横向 文…

【惠友小课堂】健康开学第一课,青少年脊柱侧弯了解一下?让孩子少走“弯”路

寒假结束迎来开学,家长们又开始了新一轮的“内卷”之旅,可在关心学业的同时,千万不能忽略孩子们的身体健康,脊柱侧弯已成为继肥胖症、近视之后我国儿童青少年的第三大健康“杀手”。 至于引起脊柱侧弯的原因,可能很多家…

安装Android Studio遇到Unable to access Android SDK add-on list的错误

第一次安装android studio的时候,提示:unable to access Android sdk add-on list 解决办法 这个错误一般是android studoi代理没有设置导致的,需要在setting里面设置: 点击Android Studio - Preferences,在 Appeara…

【Java设计模式】十八、观察者模式

文章目录 1、观察者模式2、案例:模拟微信公众号3、总结4、在源码中的实际应用 1、观察者模式 发布订阅模式,一对多,让多个观察者对象同时监听某一个主题对象。主题对象状态发生变化时,通知所有的观察者对象,让它们自动…

SpringBoot功能模块之实现单文件、多文件上传和下载

一、单文件上传 1.1MultipartFile MultipartFile 是 Spring 框架中的一个接口,主要用于处理 HTTP 请求中的文件上传。它提供了一些方法来获取上传文件的信息和内容。 以下是 MultipartFile 的一些主要方法: getOriginalFilename():返回上…

vue 实现滚动导航

效果 实现 css 使用了 unocss 使界面滚动到给定元素的指定坐标位置 window.scrollTo({ top: 0 })使用了内边距避免最后数据高度不够 <main class"pb-100vh"></main>完整代码 <script lang"ts" setup> defineOptions({ name: DemoVi…

掌握Go语言:深入encoding/gob包的高效数据序列化

掌握Go语言&#xff1a;深入encoding/gob包的高效数据序列化 引言理解Gob和它的使用场景Gob的概念和设计目标Gob的适用场景和优势 开始使用Gob基本的Gob编码和解码示例代码编码&#xff08;序列化&#xff09;解码&#xff08;反序列化&#xff09; Gob编码高级应用自定义类型的…