请注意,本文档由 RocketMQ 团队编写。尽管理想是对技术和功能进行公正的比较,但作者的专业知识和偏见显然有利于 RocketMQ。
下表是一个方便的快速参考,可让您一目了然地发现 RocketMQ 及其最受欢迎的替代品之间的差异。
消息产品 | 客户端 SDK | 协议和规范 | 订购信息 | 预定消息 | 批量消息 | 广播消息 | 消息过滤器 | 服务器触发的重新交付 | 消息存储 | 消息追溯 | 消息优先级 | 高可用性和故障转移 | 消息跟踪 | 配置 | 管理和运营工具 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Active MQ | Java、.NET、C++ 等。 | 推送模型,支持 OpenWire、STOMP、AMQP、MQTT、JMS | Exclusive Consumer 或 Exclusive Queues 可以保证排序 | 支持的 | 不支持 | 支持的 | 支持的 | 不支持 | 使用 JDBC 和高性能日志支持非常快速的持久化,例如 levelDB、kahaDB | 支持的 | 支持的 | 支持,取决于存储,如果使用 levelDB 则需要 ZooKeeper 服务器 | 不支持 | 默认配置为低级,用户需优化配置参数 | 支持的 |
Kafka | Java、Scala 等。 | 拉取模型,支持TCP | 确保分区内消息的排序 | 不支持 | 支持,带有异步生产者 | 不支持 | 支持,可以使用Kafka Streams过滤消息 | 不支持 | 高性能文件存储 | 支持的偏移量指示 | 不支持 | 支持,需要 ZooKeeper 服务器 | 不支持 | Kafka 使用键值对格式进行配置。这些值可以从文件或以编程方式提供。 | 支持,使用终端命令公开核心指标 |
RocketMQ | Java、C++、围棋 | 拉取模型,支持 TCP、JMS、OpenMessaging | 确保消息的严格排序,并且可以优雅地横向扩展 | 支持的 | 支持,具有同步模式以避免消息丢失 | 支持的 | 支持的基于 SQL92 的属性过滤器表达式 | 支持的 | 高性能和低延迟的文件存储 | 支持的时间戳和偏移量两种表示 | 不支持 | 支持的主从模型,无需其他套件 | 支持的 | 开箱即用,用户只需注意一些配置 | 支持的、丰富的 Web 和终端命令以公开核心指标 |
Messaging Product | Client SDK | Protocol and Specification | Ordered Message | Scheduled Message | Batched Message | BroadCast Message | Message Filter | Server Triggered Redelivery | Message Storage | Message Retroactive | Message Priority | High Availability and Failover | Message Track | Configuration | Management and Operation Tools |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ActiveMQ | Java, .NET, C++ etc. | Push model, support OpenWire, STOMP, AMQP, MQTT, JMS | Exclusive Consumer or Exclusive Queues can ensure ordering | Supported | Not Supported | Supported | Supported | Not Supported | Supports very fast persistence using JDBC along with a high performance journal,such as levelDB, kahaDB | Supported | Supported | Supported, depending on storage,if using levelDB it requires a ZooKeeper server | Not Supported | The default configuration is low level, user need to optimize the configuration parameters | Supported |
Kafka | Java, Scala etc. | Pull model, support TCP | Ensure ordering of messages within a partition | Not Supported | Supported, with async producer | Not Supported | Supported, you can use Kafka Streams to filter messages | Not Supported | High performance file storage | Supported offset indicate | Not Supported | Supported, requires a ZooKeeper server | Not Supported | Kafka uses key-value pairs format for configuration. These values can be supplied either from a file or programmatically. | Supported, use terminal command to expose core metrics |
RocketMQ | Java, C++, Go | Pull model, support TCP, JMS, OpenMessaging | Ensure strict ordering of messages,and can scale out gracefully | Supported | Supported, with sync mode to avoid message loss | Supported | Supported, property filter expressions based on SQL92 | Supported | High performance and low latency file storage | Supported timestamp and offset two indicates | Not Supported | Supported, Master-Slave model, without another kit | Supported | Work out of box,user only need to pay attention to a few configurations | Supported, rich web and terminal command to expose core metrics |