RocketMQ 的功能和定位
RocketMQ 是阿里开源的分布式消息中间件,最早服务于阿里双十一大促场景,核心目标是高吞吐、高可靠、可伸缩。常用于异步解耦、削峰填谷、事务消息等场景,是金融、电商领域使用非常广泛的消息队列之一。
核心概念
- Producer:发送消息的生产者,可以做重试、批量发送等。
- Consumer:消费消息的消费者,支持集群消费和广播消费两种模式。
- Topic:主题,消息的逻辑分类,不同业务通常使用不同 Topic。
- Tag:标签,同一 Topic 下对消息做更细粒度的过滤。
- Broker:真正存储和转发消息的服务节点,多个 Broker 组成集群。
- NameServer:路由注册中心,维护 Topic 与 Broker 的路由信息。
消息投递与消费模型
Producer 先从 NameServer 获取 Topic 的路由信息,再将消息发送到对应 Broker 的队列中。Consumer 通过消费位点(offset)顺序拉取消息并进行处理。
- 集群消费:同一消费组内多个实例共同消费一个 Topic,达到负载均衡。
- 广播消费:同一消息会被消费组内所有实例各消费一遍,常用于配置刷新这类场景。
- 顺序消息:通过同一业务 Key 固定落到同一队列,保证队列内消息有序。
典型使用场景
- 订单创建、支付完成等事件的异步通知
- 高峰流量削峰(下单写入 MQ,后端系统按能力慢慢消费)
- 分布式事务(事务消息确保本地事务与消息发送的一致性)
- 日志收集、行为埋点采集
优缺点
优点:
- 单机高吞吐,集群易扩展,天然支持大规模场景
- 支持顺序消息、延时消息、事务消息等高级特性
- 存储基于 CommitLog,磁盘顺序写,性能稳定
缺点:
- 运维复杂度相对较高,需要理解 NameServer、Broker 等角色
- 生态相对 Kafka 略弱,跨语言客户端不如 RabbitMQ 丰富
- 版本之间差异较大,升级和迁移需要评估