【消息队列】RabbitMQ的基本架构?

1、RabbitMQ的基本架构是什么?包括哪些核心组件?

RabbitMQ的架构其实很像我们现实生活中的快递物流系统。
有6个关键组件组成:
1、Producer(生产者) :就是发件人 ,负责产生消息并发送给RabbitMQ
2、Exchange(交换机) :就是快递分拣中心 ,是RabbitMQ中最核心的设计!生产者发来的包裹不会直接进队列,而是先发给交换机 。交换机根据包裹上的地址(Routing Key)路由键 ,决定把它扔进哪个队列。
3、Queue(队列):就是快递仓库 。消息最终存放的地方,等待被取走。

一个消息可以被拷贝到多个队列中,但是一个队列中的消息只能被消费一次。
4、Binding(绑定):就是分拣规则 。告诉交换机:如果是发往北京的包裹,请扔进A队列。

它把Exchange和Queue连接起来。
5、Consumer(消费者) :就是收件人 。从队列中取消息并处理。

6、Virtual Host(虚拟主机):就是独立租户 。这就好比一台服务器上跑了多个MySQL数据库(DB1、DB2),VHost之间是完全隔离的,互不影响。

通常区分不同的业务线,比如/order给订单组用,/user给用户组用。

2、为什么要有Exchange?直接发给Queue不行吗?

这是很多人的疑问,我刚开始也一样,有这个问题,下面看完你应该会明白的。

普通MQ,如ActiveMQ早期,确实点对点,直接发送给队列。

而RabbitMQ的设计哲学就是解耦 ,没错,解耦!

生产者不需要知道消息发给谁 ,只需要知道这类消息是什么类型的 就好了。

如果你的业务变了,比如注册成功的消息,原本只需要发邮件(QueueA),现在需要加一个发短信(QueueB)
如果没有Exchange,得改代码,让生产者发两份。
有了Exchange ,生产者代码一行不用动,只需要在后台配置一下,把Exchange绑定到新的QueueB上就行了。灵活路由 的牛B之处就体现出来了。

相关推荐
小白学大数据8 小时前
拼多多反爬对抗实战:Scrapy 中间件化采集架构解析
开发语言·scrapy·中间件·架构
茵Cindy8 小时前
AI+HR智能体架构如何落地?从入口到生态底座的工程实现
人工智能·架构·ai+hr
此时不提桶,更待何时8 小时前
06-18-A-RabbitMQ消息特性与消费机制详解
分布式·rabbitmq
Interview Aid1128 小时前
SoFi 面试流程全解析:技术面试、OA 与备考指南
面试·职场和发展
骇客野人9 小时前
微服务多级缓存架构设计
缓存·微服务·架构
闻哥9 小时前
分布式任务调度框架:XXL-Job / ElasticJob / DolphinScheduler / SchedulerX 架构对比与选型
分布式·架构·wpf
天远API9 小时前
零信任架构实战:基于天远风控经营异常预警构建自动化供应商店铺巡检网关
人工智能·架构·自动化·dubbo
AI行业应用研究9 小时前
会务信息载体的演进:纸质、PDF 与结构化数据源的分发成本与版本一致性
大数据·人工智能·安全·小程序·架构·pdf
YangYang9YangYan10 小时前
2027数学与应用数学转产品经理:面试解释与项目准备
面试·职场和发展·产品经理
JPower_mr.g10 小时前
SmartCall 音色管理技术解析:基于 SPI 的可扩展音色注册架构
java·开发语言·人工智能·ai·架构·开源