首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
SAAS
ToB门户
了解全球最新的ToB事件
论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
微博
Follow
记录
Doing
博客
Blog
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
排行榜
Ranklist
相册
Album
应用中心
qidao123.com ToB IT社区-企服评测·应用市场
»
论坛
›
物联网/工业互联网
›
物联网
›
通过物流分拣系统来明白RabbitMQ的消息机制 ...
返回列表
发新帖
通过物流分拣系统来明白RabbitMQ的消息机制
[复制链接]
发表于 2024-11-17 07:11:01
|
显示全部楼层
|
阅读模式
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
×
RabbitMQ作为一个消息中心件,通过队列和路由机制,资助应用程序高效传递消息。而它的消息流转过程,其实可以用物流分拣系统来直观明白。
在一个典型的物流分拣系统中,包裹会颠末多个节点(好比分拣中心、配送站),最终被送到具体的用户手中。这一过程和RabbitMQ的消息传递过程有很多相似之处。以下,我们用物流分拣的流程来明白RabbitMQ的核心概念。
1. RabbitMQ的基本概念和物流分拣的类比
消息(Message)
:每一个消息就是一个待分发的包裹。
交换机
(Exchange)
:
交换机
负责接收和分发消息,相当于物流中的“总分拣站”。
队列(Queue)
:队列是消息的存放地,类似于包裹在物流系统中等候用户取件的驿站。
路由键(Routing Key)
:每条消息都有一个标识的路由键,决定包裹的去处,相当于包裹的所在标签。
绑定键(Binding Key)
:在
交换机
和队列之间建立的毗连方式,根据这个键来确定哪些队列会接收哪些消息。
死信队列(Dead Letter Queue, DLQ)
:用于处理非常的消息,相当于那些无人领取或无法送达的包裹被放入的特殊区域。
2. 通过分拣中心(Exchange)分发消息
在RabbitMQ中,消息(包裹)首先会进入一个交换机(Exchange)。这个交换机类似于物流中的
总分拣中心
,负责接收全部的包裹并根据每个包裹的路由信息(Routing Key)决定下一步要发往哪个配送站点。
交换机的类型
RabbitMQ提供了多种交换机类型,通过不同的方式来分发消息:
直连交换机(Direct Exchange)
:可以明白为每个包裹根据所在直接送往对应的配送站。每个包裹的Routing Key会被交换机与队列的绑定键(Binding Key)进行精确匹配,假如匹配成功,包裹就会被送往指定的队列。
主题交换机(Topic Exchange)
:支持含糊匹配,好比包裹上标注的是“*省-市-站点”这样的所在,交换机可以根据通配符进行匹配,将包裹分发到匹配的多个队列中。
扇出交换机(Fanout Exchange)
:全部的包裹不管所在标签是什么,都会被分发到全部的队列,类似于在某一站点直接把包裹分发到全部的下级分拣中心。
示例
好比,包裹进入一个“广东省总分拣站”(Exchange),这个分拣站会根据包裹的Routing Key决定该包裹的去处,例如“广东省-深圳市-京东实体店”。交换时机把这个包裹送到符合条件的队列,好比“京东实体店队列”。
3. 快递驿站(Queue)接收和
存储
包裹
每个队列就像是一个
快递驿站
,它是消息最终到达的地方,等候“消费者”来提取消息。队列与交换机之间的关系是通过绑定键(Binding Key)来实现的。绑定键决定了哪些队列会接收哪些消息。好比:
假如队列绑定了一个“广东省-深圳市-京东实体店”的绑定键,那么全部带有匹配路由键的包裹就会被送到这个队列(驿站)。
4. 消费者提取消息(取件)
消费者从队列中消费消息,相当于用户到驿站取件。消费者可以有多种模式,好比一次取一条或者批量取件。在RabbitMQ中,消费者从队列中消费消息,完成整个消息流转过程。
消费的模式
手动确认(Manual Acknowledgment)
:消费者可以手动确认消息的接收。假如消费失败,消息可以重新放回队列。
主动确认(Auto Acknowledgment)
:消息在送达后立即确认,不会返回队列。
5. 处理非常消息——死信队列
在物流系统中,有些包裹由于所在不完整、无人领取等原因大概会被存放到特殊的“死信区”。在RabbitMQ中,死信队列(DLQ)就是这个“死信区”,用于处理那些由于非常环境无法正常投递的消息。
死信队列在以下几种环境下会被使用:
队列已满,无法再接收新消息。
消费者拒绝接收消息并设置为不重入队列。
消息在队列中等候超时。
死信队列为消息的非常处理提供了可靠的机制,可以在后续进行重新分发或手动处理。
总结
通过物流分拣系统的类比,可以更直观地明白RabbitMQ的消息流转机制:
消息先辈入
交换机
,就像包裹进入总分拣中心。
交换机根据路由键
将消息发送到相应的队列,类似于分拣中心将包裹分发到不同的配送站。
队列接收消息
并等候消费者提取,相当于包裹存放在驿站,等候用户取件。
死信队列
用于处理无法送达或非常的消息,相当于物流系统中的“死信区”。
RabbitMQ的这种消息传递机制,联合机动的交换机类型和路由规则,可以应用于多种业务场景,如消息关照、使命调理、日记收集等。希望通过这个类比,能够资助你更好地明白RabbitMQ的消息机制,让它在你的项目中发挥更大的作用。
回复
使用道具
举报
返回列表
浏览过的版块
分布式数据库
人工智能
Oracle
开源技术
运维.售后
.Net
SQL-Server
宁睿
+ 我要发帖
登录后关闭弹窗
登录参与点评抽奖 加入IT实名职场社区
去登录
微信订阅号
微信服务号
微信客服(加群)
H5
小程序
快速回复
返回顶部
返回列表