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