消息队列(MQ)
1.什么是消息队列
消息队列(Message Queue, MQ)是一种跨进程通信的方式,用于在分布式系统中解耦不同的组件,实现异步通信和流量削峰。
2.MQ的作用
- 解耦:生产者和消费者无需直接交互,只需要通过队列进行数据传输。
- 异步处理:提高系统的吞吐量,减少请求响应时间。
- 流量削峰:应对高并发场景,防止系统被突发请求压垮。
- 可靠通信:保证消息不会丢失,提高系统的可靠性。
- 数据分发:实现一对多或多对多的数据广播。
3.常见MQ组件
- ActiveMQ:Apache的老牌消息队列,基于JMS规范。
- RabbitMQ:基于Erlang开发,支持AMQP协议,功能强大。
- RocketMQ:阿里巴巴开源,专为高吞吐量设计。
- Kafka:适用于大数据和日志处理
4. MQ 的核心概念
- 生产者(Producer):发送消息的角色。
- 消费者(Consumer):接收并处理消息的角色。
- 消息(Message):生产者发送的具体数据。
- 队列(Queue):消息存储的容器,消费者从中拉取消息。
- 主题(Topic):用于发布/订阅模式,消息可被多个消费者接收。
- 交换机(Exchange):RabbitMQ 的概念,用于路由消息。
5. MQ 的工作模式
5.1 点对点(P2P)
消息被存储在一个队列中,每个消息只能被一个消费者消费。
5.2 发布/订阅(Pub/Sub)
生产者将消息发布到 Topic,多个订阅者都可以接收相同的消息。
5.3 生产-确认-消费机制
生产者发送消息到 MQ。
MQ 确认消息已存储(ACK 机制)。
消费者拉取或接收消息并处理。
消费者处理完成后确认(ACK)。
MQ 删除已确认的消息。
浙公网安备 33010602011771号