跳至主要内容
版本:5.0

为什么选择 RocketMQ

为什么选择 RocketMQ

在 RocketMQ 在阿里巴巴早期开发阶段,我们将其用于多种目的,包括异步通信、搜索、社交网络活动流、数据管道和交易流程。随着我们的交易业务增长,我们注意到消息集群承受着越来越大的压力。

在观察和分析 ActiveMQ IO 模块的性能后,我们发现随着队列和虚拟主题数量的增加,存在瓶颈。我们尝试通过各种方法解决这个问题,例如限流、断路器和服务降级,但都没有取得令人满意的效果。我们也考虑使用 Kafka,这是一种流行的消息解决方案,但它不满足我们对低延迟和高可靠性的要求,如下所述。因此,我们决定开发一个新的消息引擎,能够处理更广泛的用例,从传统的发布/订阅到高容量、实时、零错误事务系统。

自诞生以来,Apache RocketMQ 凭借其简单的架构、丰富的业务功能和极高的可扩展性,已被企业开发人员和云供应商广泛采用。经过十多年的广泛场景打磨,RocketMQ 已成为金融级可靠业务消息的行业标准,广泛应用于互联网、大数据、移动互联网、物联网等领域。

提示

下表显示了 RocketMQ、ActiveMQ 和 Kafka 之间的比较

RocketMQ 与 ActiveMQ 与 Kafka 的比较

消息产品客户端 SDK协议和规范有序消息定时消息批量消息广播消息消息过滤器服务器触发重试消息存储消息追溯消息优先级高可用性和故障转移消息跟踪配置管理和操作工具
ActiveMQJava、.NET、C++ 等推送模型,支持 OpenWire、STOMP、AMQP、MQTT、JMS独占消费者或独占队列可以确保排序支持不支持支持支持不支持支持使用 JDBC 以及高性能日志(如 levelDB、kahaDB)进行非常快速的持久化支持支持支持,取决于存储,如果使用 levelDB,则需要 ZooKeeper 服务器不支持默认配置级别较低,用户需要优化配置参数支持
KafkaJava、Scala 等拉取模型,支持 TCP确保分区内消息的排序不支持支持,使用异步生产者不支持支持,可以使用 Kafka Streams 过滤消息不支持高性能文件存储支持偏移量指示不支持支持,需要 ZooKeeper 服务器不支持Kafka 使用键值对格式进行配置。这些值可以从文件或以编程方式提供。支持,使用终端命令公开核心指标
RocketMQJava、C++、Go拉取模型,支持 TCP、JMS、OpenMessaging确保消息的严格排序,并且可以优雅地扩展支持支持,使用同步模式以避免消息丢失支持支持,基于 SQL92 的属性过滤器表达式支持高性能、低延迟文件存储支持时间戳和偏移量两个指示不支持支持,主从模型,无需其他套件支持开箱即用,用户只需要关注一些配置支持,丰富的 Web 和终端命令公开核心指标