MQ入门
2026年3月13日大约 2 分钟
MQ入门
同步调用
在微服务中OpenFeign就是同步调用的典型代表,使用OpenFeign进行服务间调用时,调用方会等待被调用方处理完成并返回结果后才继续执行后续逻辑。
- 调用者发起请求后需要等待服务提供者执行业务返回结果后,才能继续执行后面的业务。
缺点
- 拓展性差
- 性能下降:调用方需要等待被调用方处理完成并返回结果后才能继续执行后续逻辑,如果被调用方处理时间较长,调用方就会一直处于等待状态,导致性能下降。
- 级联失败:基于OpenFeign调用多个服务时、当某一个服务出现故障时,整个事务都会回滚,导致失败。
异步调用
异步调用通常是基于消息通知的方式实现的。包括三个角色:
- 消息发送者:投递消息的人,就是原来的调用者
- 消息代理:管理、暂存、转发消息,你可以把它理解成微信服务器
- 消息接收者:接收和处理消息的人,就是原来的服务提供者

图:消息通知流程
异步调用中,发送者不再直接同步调用接收者的业务接口,而是发送一条消息投递给消息代理。
然后接收者根据自己的需求从消息代理那里订阅消息。每当发送者发送消息后,接受者都能获取消息并处理。
常见的MQ
MQ (Message Queue,消息队列)是一种异步通信的中间件,常用于解耦、削峰填谷等场景。常见的MQ有:
图:常见MQ的区别
- RabbitMQ:基于AMQP协议的开源消息队列,支持多种消息传递模式,具有高可靠性和可扩展性。
- Kafka:分布式流处理平台,适用于大规模数据流的处理和分析,具有高吞吐量和低延迟的特点。
- ActiveMQ:基于JMS规范的开源消息队列,支持多种协议和消息传递模式,具有高可靠性和可扩展性。
- RocketMQ:阿里巴巴开源的分布式消息队列,支持高吞吐量和低延迟的消息传递,适用于大规模分布式系统。