消息中间件:
消息(message)是指在应用间传送的数据。消息可以非常简单,也可以很复杂。
消息队列中间件(Message Queue Middleware,简称为MQ)是指利用高效可靠的消息传递机制进行与平台无关的数据交流,并基于数据通信来进行分布式系统的集成。通过提供消息传递和消息排列模型,它可以在分布式环境下扩展进程间的通信。
什么是队列?
队列—Queue
队列是一种用于存储数据的数据结构(与链表和栈类似),数据到达的次序是队列的关键;在日常生活中队列是指从序列的开始按照顺序等待服务的一队人或物。
队列是一种只能在一端插入(队尾),在另一端删除(队首)的有序线性表。队列中第一个插入的元素也是第一个被删除的元素,所以队列是一种先进先出(FIFO,First In First Out)或后进后出(LiLO,Last In Last Out)线性表。
在队列中插入一个元素,称为入队(EnQueue),从队列中删除一个元素,称为出队(DeQueue);试图对一个空队列执行出队操作称为下溢(underflow),试图对一个满队列执行入队操作称为溢出(overflow);通常认为溢出和下溢是异常。

点击可查看队列的讲解。
消息传递模式:
消息队列中间件,也可以称为消息队列或者消息中间件。它一般有两种传递模式:
- 点对点模式(P2P,Point-to_Point) 该模式是基于队列的,消息生产者发送消息到队列,消息消费者从队列中接受消息,队列的存在使得消息的异步传输成为可能。
- 发布/订阅模式(Pub/Sub) 该模式定义了如何向一个内容节点发布和订阅消息,这个内容节点称之为“主题(Topic)”,主题可以认为是消息传递的中介,消息发布者将消息发布到某个主题,而消息订阅者则从主题中订阅消息。 主题使得消息的订阅者与消息的发布者互相保持独立,不需要进行接触即可保证消息的传递,发布/订阅模式在消息的一对多广播时采用。
消息中间件的种类:
- RabbitMQ
- Kafka
- ActiveMQ
- RocketMQ


消息中间件的作用:
消息中间件在不同的应用场景下可以展现不同的作用,总的来说,可以概括为以下几点:
- 解耦
- 消息持久化
- 扩展性
- 削峰
- 可恢复性
- 顺序性
- 缓存
- 异步通信