【消息队列的定义】
消息队列是在消息的传输过程中保存消息的容器;
用于接收消息,并以文件的形式存储;
一个消息队列可以被一个或者多个消费者消费;
三个元素:
Producer:消息生产者,负责生产和发送消息到Broker;
Broker:消息处理中心,负责消息存储、确认、重试等;包含多个Queue;
Consumer:消息消费者,负责从Broker中获取消息,并进行相应处理;
【消息队列的抽象过程】
过程描述:
1、消息生产者发送消息至MQ,等待MQ返回ACK;
2、MQ收到消息,将消息保存在MQ中;(先保存在内存,为了确保高可靠性,进行消息存盘,持久化到磁盘文件)
3、MQ消息存盘成功后,响应ACK给生产者;
4、MQ将消息推送给对应的消费者,等待消费者返回ACK;
5、如果消费者在指定时间内成功返回了ACK,则MQ判定消息消费成功,删除磁盘文件中的消息,执行步骤6;如果MQ在指定时间内没有收到ACK,则MQ判定消息消费失败,会尝试重试推送消息,重复执行4/5/6三步;
6、MQ删除磁盘文件中的消息;
文件系统:
1、落盘地点:部署MQ服务器的虚拟机/物理机的文件系统;
2、刷盘方式:异步刷盘和同步刷盘;
【刷盘原理】
以RocketMQ为例,详细分解异步刷盘和同