消息队列选型指南:Kafka、RocketMQ、RabbitMQ、Pulsar 怎么选
消息队列选型不要只看吞吐,还要看业务语义、消费模型、延迟、顺序性、事务能力、运维成本和团队经验。
消息队列选型指南:Kafka、RocketMQ、RabbitMQ、Pulsar 怎么选
消息队列没有万能答案。Kafka、RocketMQ、RabbitMQ、Pulsar 都很强,但它们强在不同地方。
选型时不要先问“哪个最快”,而要先问:我要解决的是日志流、业务事件、复杂路由、延迟消息,还是平台级多租户消息服务?
Rendering diagram...
选型维度
核心维度包括:
- 吞吐量。
- 消息延迟。
- 顺序性。
- 消息保留和回放。
- 路由能力。
- 事务消息。
- 延迟消息。
- 多租户。
- 运维复杂度。
- 团队熟悉度。
产品定位
Kafka 适合高吞吐事件流、日志、CDC、实时数仓。
RocketMQ 适合业务消息、事务消息、延迟消息、顺序消息。
RabbitMQ 适合复杂路由、任务队列、传统企业消息。
Pulsar 适合多租户、云原生、存算分离、大规模 Topic。
对比表
| 场景 | 推荐 |
|---|---|
| 日志采集 | Kafka |
| 实时数仓 | Kafka + Flink |
| 订单业务事件 | RocketMQ / Kafka |
| 事务消息 | RocketMQ |
| 延迟消息 | RocketMQ / RabbitMQ |
| 复杂路由 | RabbitMQ |
| 多租户消息平台 | Pulsar |
| 简单异步任务 | RabbitMQ / Redis Stream |
不要忽视运维
消息队列上线后要长期维护 Broker、Topic、分区、消费组、堆积、磁盘、水位、重试和死信。
团队不熟悉的系统,即使能力强,也可能带来生产风险。
小结
选 MQ 的关键是匹配场景:
- Kafka:数据流。
- RocketMQ:业务消息。
- RabbitMQ:路由和任务。
- Pulsar:平台化和多租户。