消息队列 Message Queue,简称 MQ。  
 
 是一种应用间的通信方式,主要由三个部分组成。  
 
 生产者:Producer  
 
 消息的产生者与调用端  
 
 主要负责消息所承载的业务信息的实例化  
 
 是一个队列的发起方  
 
 代理:Broker  
 
 主要的处理单元  
 
 负责消息的存储、投递、及各种队列附加功能的实现  
 
 是消息队列最核心的组成部分  
 
 消费者:Consumer 一个消息队列的终端  
 
 也是消息的调用端  
 
 具体是根据消息承载的信息,处理各种业务逻辑。  
 
 消息队列的应用场景较多,常用的可以分为三种:  
 
 异步处理  
 
 主要应用于对实时性要求不严格的场景,  
 
 比如:用户注册发送验证码、下单通知、发送优惠券等等。  
 
 服务方只需要把协商好的消息发送到消息队列,  
 
 剩下的由消费消息的服务去处理,  
 
 不用等待消费服务返回结果。  
 
 应用解耦  
 
 应用解耦可以看作是把相关但耦合度不高的系统联系起来。  
 
 比如订单系统与 WMS、EHR 系统,有关联但不哪么紧密  
 
 ,每个系统之间只需要把约定的消息发送到 MQ,另外的系统去消费即可。  
 
 解决了各个系统可以采用不同的架构、语言来实现,从而大大增加了系统的灵活性。  
 
 流量削峰  
 
 流量削峰一般应用在大流量入口且短时间内业务需求处理不完的服务中心, 为了权衡高可用,把大量的并行任务发送到 MQ 中,  
 
 依据 MQ 的存储及分发功能,平稳的处理后续的业务,  
 
 起到一个大流量缓冲的作用。  
 
 目前市面上常见的消息队列中间件主要有  
 
 ActiveMQ、RabbitMQ、Kafka、RocketMQ 这几种,  
 
 在架构技术选型的时候一般根据业务的需求选择合适的中间件:  
 
 比如中小型公司,低吞吐量的一般用 ActiveMQ、RabbitMQ 较为合适,  
 
 大数据高吞吐量的大型公司一般选用 Kafka 和 RocketMQ。  
 
 以上就是我的 MQ 的理解。