连载中 3/20

主流 MQ 选型:RocketMQ、Kafka、RabbitMQ 怎么挑

2026-07-30 · 786 阅读 · 0 评论 · 0 赞

老王的选型纠结症

决定引入 MQ 之后,老王卡在了选型上。网上攻略看了二十篇,有人说 Kafka 王者,有人说 RocketMQ 真香,还有人说 RabbitMQ 老而弥坚。这一篇不站队,把三家的账摆开来算,最后给一条按场景走的决策路径。

三家的一分钟画像

RabbitMQ:灵活的瑞士军刀。2007 年问世,Erlang 语言编写,AMQP 协议的标杆实现。最大的特色是路由灵活——Exchange 的直连、主题、扇形、头部四种交换机类型,能把一条消息按各种规则分发出去。延迟低、管理界面友好,但吞吐是三家里最弱的,Erlang 也让二开的人才不好找。

Kafka:吞吐量猛兽。2011 年从 LinkedIn 开源,为日志采集和流式处理而生。顺序写磁盘加零拷贝的设计让它单机就能扛每秒百万级消息,批量+压缩进一步摊薄成本。它自带一整套流处理生态(Kafka Streams、Connect),大数据管道几乎是它的主场。但业务侧的功能偏薄:没有内置延迟消息,重试和死信要自己搭,事务语义主要面向流处理。

RocketMQ:电商场景全能选手。2012 年从阿里开源,Java 编写,吞吐十万级,毫秒级延迟。它是三家里业务功能最全的:事务消息、定时/延迟消息、完善的重试与死信队列、消息轨迹查询。吸收了 Kafka 存储设计的精华,又长了一身面向业务的功能。京东、滴滴等大厂的订单类系统大量使用。

核心差异一张表

对比项RabbitMQKafkaRocketMQ
单机吞吐万级十万到百万级十万级
延迟微秒到毫秒级毫秒级(批量攒批)毫秒级
事务消息不支持面向流处理语义半消息+回查,业务友好
延迟/定时消息插件支持不内置内置(固定级别/任意精度)
重试与死信有,需配置自己搭开箱即用
消息回溯不支持按 offset 随便回按时间回溯
典型主场企业集成、低延迟场景日志管道、流计算电商订单、业务消息

按场景走的决策路径

  • 日志采集、埋点上报、大数据管道:闭眼选 Kafka。吞吐天花板最高,生态最厚,Flink/Spark 的对接是一等公民;
  • 订单、支付、积分这类业务消息:优先 RocketMQ。事务消息、延迟消息、重试死信都是业务系统的高频刚需,自己造这些轮子的成本远高于选型差价;
  • 企业内部系统间集成、消息路由规则复杂、并发量不大:RabbitMQ 合适。管理省心、协议成熟,路由灵活性的优势在小流量场景里没有对手;
  • 团队技术栈:全 Java 团队排查 RocketMQ 源码毫无门槛;Erlang 的 RabbitMQ 和 Scala 的 Kafka,出深坑时排障成本会高一截。

老王的选择

老王的咖啡馆是典型的业务系统:要发订单事件、要做订单超时关闭(延迟消息)、积分服务消费失败需要重试和死信兜底。三条需求撞在 RocketMQ 的枪口上,吞吐十万级对日单百万的业务也绰绰有余。选型定了:RocketMQ 为主,埋点日志走 Kafka,互不越界。

这里多说一句:选型解决的是「场地」,可靠性靠的是「打法」。同一台 RocketMQ,有人用出了 99.99% 的可用性,有人用出了天天丢消息。后面从第 5 篇开始,我们专讲怎么用对。

小结

RabbitMQ 胜在灵活低延迟,Kafka 胜在吞吐和流生态,RocketMQ 胜在业务功能全家桶。没有最好的 MQ,只有和你场景最合拍的 MQ:大数据选 Kafka,业务消息选 RocketMQ,复杂路由小流量选 RabbitMQ。

场地定了,下一课是熟悉场地:Topic、Queue、消费者组、推拉模式——一条消息从生产者走到消费者,中间到底经历了什么。基础概念不打牢,后面的可靠性都是空中楼阁。

503

10 年全栈工程师 · 503咖啡馆主理人

#消息队列#MQ选型#RocketMQ#Kafka#RabbitMQ

评论 (0)

相关推荐

连载中 12/20

排查四件套:jstack、jmap、jstat、jcmd 的实战分工

jstack 看线程在干什么,jmap 看堆里装了什么,jstat 看运行时在变什么,jcmd 是统一入口。四把刀各管一段,配合着用没有查不动的现场。

#jstack#jmap#jstat#jcmd#排查工具
2026-09-16 · 4 阅读 · 0 评论 · 0 赞
连载中 11/20

GC 日志:把回收过程翻译成人话

一行 GC 日志里塞着七种信息:谁触发的、收了哪、停了多久、活了哪些。加上 -Xlog 配置,再加上日志分析工具,GC 不再是只能盯监控曲线的黑盒。

#GC日志#Xlog#日志分析#GC监控#Full GC排查
2026-09-16 · 13 阅读 · 0 评论 · 0 赞
连载中 10/20

ZGC:亚毫秒停顿是怎么炼成的

百 G 大堆停顿不到一毫秒,靠的是把搬家全部挪到并发阶段——着色指针让引用自带状态,读屏障让搬运中的对象依然可访问。代价是吞吐与内存,收益是停顿与堆大小解耦。

#ZGC#着色指针#读屏障#亚毫秒停顿#分代ZGC
2026-09-15 · 8 阅读 · 0 评论 · 0 赞