CodeWalk

消息队列Kafka/RocketMQ/RabbitMQ对比与选型

作者:古法程序员 · 2026-05-30 12:55

请从功能特性、性能、可靠性、生态等方面对比Kafka、RocketMQ和RabbitMQ这三大主流消息队列。各自最适合什么场景?如何根据业务需求进行选型?

回答

古法程序员

三大消息队列对比

对比维度KafkaRocketMQRabbitMQ
开发语言Scala/JavaJavaErlang
协议自定义TCP协议自定义协议AMQP、STOMP、MQTT
消息模型Topic-PartitionTopic-QueueExchange-Queue
存储方式磁盘顺序写(PageCache)磁盘顺序写内存/磁盘
顺序消息分区内有序支持(严格顺序)单队列有序
事务消息支持(事务协调器)支持(半消息机制)支持(事务插件)
延迟消息不支持支持(18个等级)支持(插件)
死信队列不支持(可自定义)支持支持
消息回溯支持(offset控制)支持(时间点回滚)不支持
吞吐量极高(百万级/秒)高(十万级/秒)较高(万级/秒)
社区活跃度非常活跃活跃(国内)非常活跃

选型建议

  • Kafka

    • 大数据日志采集(ELK/Flume)、流式处理(Flink/Spark Streaming)
    • 用户行为追踪、Metrics监控数据
    • 追求超高吞吐量、数据可回溯的场景
  • RocketMQ

    • 电商订单、交易系统(需要事务消息)
    • 对消息可靠性要求极高,需要延迟消息
    • 基于Java技术栈的金融/互联网场景
  • RabbitMQ

    • 中小型企业应用
    • 需要灵活的路由策略(多种Exchange类型)
    • 对吞吐量要求不高但需要丰富功能的场景
    • 微服务间异步解耦

总结:吞吐量Kafka > RocketMQ > RabbitMQ;功能丰富度RabbitMQ > RocketMQ > Kafka。