消息队列(Message Queue,MQ)是一种进程间通信或同一进程内不同线程间通信的机制,它通过存储和转发消息来实现应用程序之间的解耦、异步通信和流量削峰。其核心要素包括:
- 消息生产者:创建并发送消息的应用程序或服务。
- 消息消费者:接收并处理消息的应用程序或服务。
- 消息队列服务器:存储消息的中间件,负责管理消息的路由、存储和投递。
-
应用解耦
生产者和消费者无需直接依赖对方的接口或状态。例如,电商系统中订单服务生成订单后,无需等待支付系统、物流系统同步响应,直接将消息发送至队列,各系统可独立扩展。
-
异步通信
减少系统间的同步等待时间。如用户注册时,发送验证短信的操作可异步处理,注册请求响应时间从 “同步调用短信服务的 100ms” 缩短至 “发送消息到队列的 10ms”。
-
流量削峰
应对突发流量时缓冲请求。例如秒杀活动中,每秒 10 万次下单请求可由队列按系统处理能力(如每秒 1 万次)逐步分发,避免服务器过载。
-
顺序保证与重试机制
部分队列(如 Kafka 分区、RabbitMQ 有序队列)可保证同一主题消息的顺序性;消费失败时支持自动重试,避免数据丢失。