介绍
RabbitMQ是基于Erlang语言开发的开源消息通信中间件,官网地址
同步调用
优点:
- 时效性强,立即得到结果
缺点:
- 耦合度高
- 如果调用链过长,性能和吞吐能力下降
- 在调用链等待过程中,请求占用的资源不能释放,高并发下浪费资源
- 有级联失败问题,提供方出现问题,会导致调用方都跟着出问题
异步调用
优点:
- 通过发布事件的方式,耦合度更低
- 吞吐量提升,调用链变短,不用等待其他服务执行完成,耗时更短
- 故障隔离,因为不存在调用,其他服务挂了也不会影响
- 流量削峰,由broker承担压力
缺点:
- 增加服务架构复杂度,不好追踪管理
- 依赖Broker的可靠性、安全性、吞吐能力
MQ对比:
RabbitMQ中的几个概念:
- channel:操作mq的工具
- exchange:路由消息到队列中
- queue:缓存消息
- virtual host:虚拟主机,是对queue、exchange等资源的逻辑分组。
RabbitMQ的安装
1.通过docker拉取镜像
1 | docker pull rabbitmq:3-management |
2.运行容器
1 | docker run \ |
常见消息模型
**publisher:**消息发布者,将消息发送到交换机或队列
**queue:**消息队列,负责接收和缓存消息
**consumer:**消息消费者,订阅队列,处理队列中的消息
- 基本模式:一对一
- 工作模式(竞争模式):一对多
- 发布/订阅模式(广播Fanout):
- 路由模式:
- 主题模式:






