1、为什么选RocketMq
ActiveMQ
随着队列和虚拟主题使用的增加,ActiveMQ IO模块达到了一个瓶颈。我们尽力通过节流、断路器或降级来解决这个问题,但效果并不理想。
Kafka
Kafka不能满足我们的要求,其尤其表现在低延迟和高可靠性方面。
RocketMQ
Apache RocketMQ 自诞生以来,因其架构简单、业务功能丰富、具备极强可扩展性等特点被众多企业开发者以及云厂商广泛采用。历经十余年的大规模场景打磨,RocketMQ 已经成为业内共识的金融级可靠业务消息首选方案,被广泛应用于互联网、大数据、移动互联网、物联网等领域的业务场景
2、RocketMQ vs. ActiveMQ vs. Kafka
消息队列产品 | 客户端SDK | 协议和规范 | 消息订阅 | 定时消息 | 批处理消息 | BroadCast (广播)消息 | 消息过滤器 | 服务器触发的重新交付 | 消息存储 | 消息追溯 | 消息优先级 | 高可用性和故障切换 | 消息跟踪 | 配置 | 管理和操作工具 |
ActiveMQ | Java, .NET, C++ etc. | Push model, support OpenWire, STOMP, AMQP, MQTT, JMS | 独占消费者或独占队列可以确保订购 | 支持 | 不支持 | 支持 | 支持 | 不支持 | 使用JDBC和高性能日志(如levelDB、kahaDB)支持非常快速的持久性 | 支持 | 支持 | 支持,取决于存储,如果使用levelDB,则需要ZooKeeper服务器 | 不支持 | 默认配置为低级别,用户需要优化配置参数 | 支持 |
Kafka | Java, Scala etc. | Pull model, support TCP | 确保partition分区内消息的顺序 | 不支持 | 支持,使用异步生成器 | 不支持 | 支持,您可以使用Kafka Streams过滤消息 | 不支持 | 高性能文件存储 | 支持的偏移指示 | 不支持 | 支持,需要ZooKeeper服务器 | 不支持 | Kafka使用键值对格式进行配置。这些值可以从文件或以编程方式提供。 | 支持,使用终端命令公开核心指标 |
RoxketMQ | Java, C++, Go | Pull model, support TCP, JMS, OpenMessaging | 确保消息的严格排序,并可以优雅地扩展 | 支持 | 支持,具有同步模式以避免消息丢失 | 支持 | 支持,基于SQL92的属性筛选器表达式 | 支持 | 高性能和低延迟文件存储 | 支持的时间戳和偏移量指示 | 不支持 | 支持,主从模式,无需其他套件 | 支持 | 开箱即用,用户只需注意一些配置 | 支持丰富的web和终端命令,以显示核心指标 |