RabbitMQ架构和模式
RabbitMQ
1、同步与异步
1、同步
- Feign:典型的同步调用
譬如:A服务调用B服务的接口
如果B服务没有返回数据给A服务之前,A服务是无法继续后续业务的
优点:
- 时效性强
缺点:
- 耦合度高
- 性能低:被调用的服务时长,直接影响了整个接口的RT
- 级联失败:被调用的服务如果失败了,直接影响了整个接口
2、异步
- 多线程
譬如:A服务调用B服务的接口
在A服务中通过异步方式去访问B服务的接口,那么只要这个请求已经发送给B服务,A服务就无需关心,直接继续自己的业务即可
优点:
- 耦合度低
- 性能好
- 没有级联失败
缺点:
- 时效性差
3、如何选择
- 同步:如果需要得到调用后的结果,就必须选择同步【一般查询居多】
- 异步:不需要即时得到调用的结果,不会影响主业务【发短信、发邮件】
4.举例
群发消息是异步,作为个人无法同时手动操作多个手机给每个人发消息,一个人只能用一部手机给另一部手机发消息这是同步。(不是群发,群发不完全是你控制的)
2、RabbitMQ
异步调用方式其实就是基于消息通知的方式,一般包含三个角色:
-
消息发送者:投递消息的人,就是原来的调用方
-
消息Broker:管理、暂存、转发消息,你可以把它理解成微信服务器
-
消息接收者:接收和处理消息的人,就是原来的服务提供方
1、安装broker
2、架构图
- Broker:消息中转站,MQ服务器
- VirtualHost:虚拟主机,具备隔离效果的一个空间,管理消息的平台。
- exchange:交换机,用来根据指定规则进行消息的路由具体的队列,交换机没有存储信息的能力
- queue:队列,具备存储消息的容器
- Publisher:消息生产者,用来生产与发送消息的角色
- Consumer:消息消费者,用来消费消息的角色-接收信息
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报