消息队列
2019-12-19 本文已影响0人
化蝶飞618
MQ的作用
- 消息通信
MQ的基础功能即为消息通信。使用MQ的客户端可以将消息发送到MQ中,也可以从MQ中消费消息。 - 异步处理
MQ作为一个数据传输的通道,可以将消息传输异步化。生产者将消息生产放入MQ中,可以继续生产其他消息,不要求获得消费者的消费信号之后再生产。
MQ也可以将RPC异步化。传统的RPC直接调用,可以转化为调用方生产消息,将原本RPC请求的内容放在消息体中,然后由RPC的被调用方去消费消息并进行处理。如果有返回结果,可以将结果再通过另外一个队列发送给调用方。 - 应用解耦
以订单系统和库存系统为例,用户下单后,订单系统需要通知库存系统。
传统模式中,假如库存系统无法访问,则订单减库存将失败,从而导致订单失败。 订单系统与库存系统耦合。
引入MQ,用户下单后,订单系统:完成持久化处理,将消息写入消息队列,返回用户订单下单成功;库存系统:订阅下单的消息,采用拉/推的方式,获取下单信息,库存系统根据下单信息,进行库存操作。他们直接交互的只有MQ服务,从而实现应用解耦。 - 削峰控流
在一些应用场景中,经常出现某种消息流量激增的情况,比如秒杀活动中的用户请求。这种情况下,下游业务可能来不及处理导致整个服务崩溃。引入MQ后,流量激增的消息可以缓存入队列中,下游业务缓慢消费,尽管有一定的延迟,但能保证整体服务稳定运行。