RabbitMQ 2025/3/5
高性能异步通信组件。
同步调用
以支付为例:
可见容易发生雪崩。
异步调用
以支付为例:
支付服务当甩手掌柜了,不管后面的几个服务的结果。只管库库发,后面那几个服务想取的时候就取,因为消息代理里可以一直装,缓存消息。
消息代理(英文Broker)
消息代理相关的技术MQ技术
Erlang面向并发的语言
RabbitMQ安装部署
可直接采用Docker,方便。
RabbitMQ消息流转的过程(整体架构)
消费者监听队列,发送者不直接发给队列,而是发给exchange交换机,交换机会根据规则把消息路由给不同队列。
因为RabbitMQ的性能很强,每秒钟可以达到数万的并发,所以企业有多个项目的话,往往部署一套RabbitMQ就够了,多个项目可以共享RabbitMQ服务。但是大家一起的话,很可能交换机出现冲突,所以引出RabbitMQ的新概念virtual-host(虚拟主机),类似与MySQL里的database(众所周知,MySQL里可以创建多个database,每个database的表和其他database的表直接是相互隔离的),每个项目都创一个自己的virtual-host,就可以相互隔离开了。
例子:MQ入门-06.RabbitMQ-快速入门_哔哩哔哩_bilibili
交换机不存只负责转发。交换机和队列必须有一个关系,才能给队列发消息。binding绑定关系。
数据隔离
虚拟主机是实现了数据隔离。
不同的项目创建不同的用户。为新建用户建一个虚拟主机。
视频举例:MQ入门-07.RabbitMQ-数据隔离_哔哩哔哩_bilibili