1. 简介
MQ(Message Queue)消息队列实际上就是一种我们很熟悉的“先进先出FIFO”数据结构。是一种消息系统间相互协作的通信机制。
2. 消息队列的功能
●解耦:模块之间使用MQ进行通信,系统间只关心通知,而非处理,降低系统间的耦合性。
●流量削峰(异步):通过MQ使短时间内的高并发请求持久化,然后逐步处理,防止系统雪崩,削平高峰期的并发流量。
●日志收集:利用MQ在接受和持久方面的高性能,防止日志导致的系统阻塞和请求延迟。
●事务最终一致性:使用消息事件表和消息队列实现分布式事务。
3. 消息队列的功能特点
●消息堆积:当消费者的消费速度比生产者发送消息慢很多的时候,消息将在处理中心逐渐积压得不到释放。我们可以通过设置阈值的方式来避免这种问题的出现,即超过阈值的消息将不会再放入处理中心,防止系统资源被耗尽。
●消息持久化:防止消息因为宕机等原因丢失,我们不在内存中持久化消息,因为我们可以在本地文件、分布式文件系统或者数据库系统将消息持久化。
●可靠投递:可靠投递是指在生产者到消息处理中心、消息处理中心到消息消费者、消息处理中心持久化消息这三个过程中丢失的情况,我们使用一些方法避免这些消息丢失,保证可靠投递。
●消息重复:消息重复是指当消息发送失败或者不知道是否发送成功的时候,消息状态的是待发送的,定时任务轮训发送所有待发送的消息,保证消息不会丢失,这就带来了可能重复发送的问题。
●严格有序:严格有序是指有些场景下需要消息按照进入队列的顺序执行。
●集群
●消息中间件