Skip to content

概述

本文试图讲清楚 RobustMQ 与当前主流 Kafka / RabbitMQ / RocketMQ 等消息队列的区别。

注意:RobustMQ 处于开发早期,本文主要从RobustMQ的定位、愿景、产品能力规划来讨论两者的区别。RobustMQ的一些能力还在开发中。目标是讲清楚现有MQ和RobustMQ的区别,对比基于个人认知的一家之言,存在偏颇,欢迎沟通交流。

一句话总结

RobustMQ 的目标是一个支持 Kafka/AMQP/MQTT 协议、架构上高度弹性、内核用 Rust 实现的现代消息队列平台,目标是替代并融合多个传统消息队列的功能与生态。

核心区别

特性 / 系统RobustMQKafkaRabbitMQRocketMQ
协议支持✅ Kafka / AMQP / MQTT / Redis 等多协议❌ 仅 Kafka 协议✅ AMQP、MQTT 插件❌ 自研协议,兼容 Kafka 部分 SDK
消息模型✅ 支持 Pub/Sub、队列、延迟、广播、私信、优先级等支持 Topic + offset(日志流)支持 Pub/Sub、工作队列支持 Topic、延迟、事务、顺序队列
架构设计✅ 存储/计算/调度解耦,Serverless 友好存算一体(Zookeeper/KRaft 依赖)集群主备 + 镜像队列Broker + NameServer
存储支持✅ 插件化存储(Redis、本地、S3、MinIO、内存等)基于磁盘日志内存+磁盘(Mnesia+队列)自研 CommitLog + 消息堆积机制
语言实现Rust(高性能 + 内存安全)Java / ScalaErlangJava
易部署性✅ 单机 / Serverless / 容器皆可较复杂,需 Zookeeper/KRaft易部署,但插件较多需 NameServer + Broker 配置
生态适配✅ 原生适配 Kafka/MQTT/AMQP 工具链Kafka 生态完整AMQP 工具链丰富与 Kafka 兼容性有限
多租户 / 多协议混用✅ 原生支持❌ 需要多套集群❌ 插件隔离❌ 不支持多协议

核心优势

多协议统一接入

  • Kafka 发,MQTT 收;AMQP 发,Kafka 收,全都支持。
  • 不再需要多个 MQ 系统进行协议桥接。

多消息模型统一支持

  • 原生支持:延迟消息、广播消息、优先级消息、死信队列、私信模型(Peer-to-peer)。
  • 无需插件或额外系统支持。

架构更现代、云原生友好

  • 存储、计算、调度完全解耦,可单独扩容。
  • 无状态调度服务支持 Serverless 场景。
  • 插件化存储(支持 S3、MinIO、Redis 等)

开发者体验好

  • 无需学习新协议,直接使用 Kafka / MQTT / AMQP 等 SDK。
  • 提供统一 REST API、Web 控制台、CLI 工具。

易迁移、低成本接入

  • 可以无缝接入已有 Kafka / RabbitMQ / MQTT 客户端,无需改造代码。
  • 支持渐进式替换原有 MQ 系统。

总结

对比维度Kafka / RabbitMQ / RocketMQRobustMQ 优势
协议支持单一协议为主✅ 多协议统一
消息模型各家部分支持,插件依赖多✅ 全模型原生支持
开发适配需配套 SDK 或插件✅ 直接使用现有生态
运维架构各有复杂性(ZK、NameServer、镜像等)✅ 更轻量,模块化部署
迁移成本高(需重写客户端或兼容协议)✅ 低(可用原生 Kafka/MQTT/AMQP SDK)