常见的MQ有ActiveMQ、KAFKA、RocketMQ;ActiveMQ IO随着队列和虚拟主题数量的增加,存在瓶颈;Kafka是一种流行的消息解决方案,但它不满足对低延迟和高可靠性的要求;RocketMq具有发布/订阅到高容量、实时、零错误事务系统,已成为金融级可靠业务消息的行业标准,广泛应用于互联网、大数据、移动互联网、物联网等领域;
RocketMQ 与 ActiveMQ 与 Kafka 的比较
消息产品 | 客户端 SDK | 协议和规范 | 有序消息 | 定时消息 | 批量消息 | 广播消息 | 消息过滤器 | 服务器触发重试 | 消息存储 | 消息追溯 | 消息优先级 | 高可用性和故障转移 | 消息跟踪 | 配置 | 管理和操作工具 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ActiveMQ | Java、.NET、C++ 等 | 推送模型,支持 OpenWire、STOMP、AMQP、MQTT、JMS | 独占消费者或独占队列可以确保排序 | 支持 | 不支持 | 支持 | 支持 | 不支持 | 支持使用 JDBC 以及高性能日志(如 levelDB、kahaDB)进行非常快速的持久化 | 支持 | 支持 | 支持,取决于存储,如果使用 levelDB,则需要 ZooKeeper 服务器 | 不支持 | 默认配置级别较低,用户需要优化配置参数 | 支持 |
Kafka | Java、Scala 等 | 拉取模型,支持 TCP | 确保分区内消息的排序 | 不支持 | 支持,使用异步生产者 | 不支持 | 支持,可以使用 Kafka Streams 过滤消息 | 不支持 | 高性能文件存储 | 支持偏移量指示 | 不支持 | 支持,需要 ZooKeeper 服务器 | 不支持 | Kafka 使用键值对格式进行配置。这些值可以从文件或以编程方式提供。 | 支持,使用终端命令公开核心指标 |
RocketMQ | Java、C++、Go | 拉取模型,支持 TCP、JMS、OpenMessaging | 确保消息的严格排序,并且可以优雅地扩展 | 支持 | 支持,使用同步模式以避免消息丢失 | 支持 | 支持,基于 SQL92 的属性过滤器表达式 | 支持 | 高性能、低延迟文件存储 | 支持时间戳和偏移量两个指示 | 不支持 | 支持,主从模型,无需其他套件 | 支持 | 开箱即用,用户只需要关注一些配置 | 支持,丰富的 Web 和终端命令公开核心指标 |
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。