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 删除已确认的消息。