Compare · 3 个对象
Kafka vs RocketMQ vs RabbitMQ
消息队列三件套:吞吐、功能、运维三张表看完就能选型
从谁的角度看
| 对比维度 | Kafka 吞吐之王,日志与流处理 | RocketMQ 交易场景,功能最全 | RabbitMQ 路由灵活,轻量解耦 |
|---|---|---|---|
| 性能与容量 | |||
| 单机吞吐量 | 百万级/秒 | 十万级/秒 | 万级/秒 |
| 消息延迟 | 毫秒级(批量发送会拉高) | 毫秒级 | 微秒~毫秒级,最低 |
| 消息堆积能力 | 磁盘顺序存,极强 | 磁盘顺序存,极强 | 内存优先,堆积后明显下降 |
| 功能特性 | |||
| 事务消息 | 不支持(仅事务写) | 原生支持(半消息 + 回查) | 不支持(需自己实现) |
| 延迟消息 | 不支持 | 原生 18 级 + 5.x 定时消息 | TTL + 死信队列模拟 |
| 顺序消息 | Partition 内有序 | Queue 内严格有序 | 单 Queue 有序 |
| 消息路由 | 只按 Topic/分区 | Topic + Tag 过滤 | 四种 Exchange,最灵活 |
| 消息回溯 | 按 offset / 时间重置,强 | 按时间回溯,支持 | 不支持(消费即删) |
| 运维与生态 | |||
| 依赖组件 | ZooKeeper 或 KRaft | NameServer(无状态) | Erlang 运行时 |
| 运维复杂度 | 高 | 中 | 低 |
| 多语言客户端 | 最全 | Java 为主,其他较弱 | 很全 |
| 典型用户 | LinkedIn、Uber、各大数仓 | 阿里、滴滴、美团 | 中小企业、传统行业 |
| 一句话选型 | |||
| 什么时候选它 | 日志采集、埋点、流处理、大数据管道 | 电商交易、金融、需要事务/延迟/顺序消息 | 业务解耦、任务分发、消息量不大但要灵活路由 |
点某一行可以高亮该维度,方便逐条横向读;移动端左右滑动查看全部列。
选型建议
Kafka
数据量大、要接 Flink/Spark、能接受较高运维成本,闭眼选。
RocketMQ
做交易和钱相关的业务,需要事务消息或延迟消息,选它最省事。
RabbitMQ
团队小、消息量万级、要按规则分发到不同队列,选它上手最快。
一句话结论
一句话:吞吐选 Kafka,业务语义选 RocketMQ,路由灵活和轻量选 RabbitMQ。三者不是替代关系,很多公司同时用两个。