消息队列选型指南: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:平台化和多租户。

参考链接