mq消息中间件有很多,rocketMQ,kafka,activeMQ,rabbitMQ,zeroMQ,等等,消息中间件的选型却很难,因为不像选数据库,或选mybaits或hibernate一样,因为没有那么多的区别,但是选一样东西首先要知道,没有最好,只有最适合,所以根据你的业务需求来选就对了。
1.活跃度
rocketMQ是阿里的,kafka,RabbitMQ优点又比较突出,目前用的人比较多。
2.持久化
ZeroMq不支持消息持久化,ActiveMQ和RabbitMQ,rocketMq等都支持。
3.分布式
activeMQ、rabbitMQ与 kafka、rocketMQ有很大的区别就是前2个只支持主从模式,后2个是分布式消息系统,支持分布式。
4.性能
如果消息性能要求高,用rocketMQ与kafka可以更优
5.开源
rocketMQ部分开源,而且是java语言开放的。
6.功能
RocketMQ功能比较强,消息重试,消息查询等。
下表是一个方便的快速参考,可以一目了然地发现RocketMQ及其最受欢迎的替代品之间的差异。消息产品 客户端SDK 协议和规范 订购消息 预定消息 批量消息 广播消息 邮件过滤器 ActiveMQ Java,.NET,C ++等 推模型,支持OpenWire,STOMP,AMQP,MQTT,JMS 独家消费者或独家排队可以确保订购 支持的 不支持 支持的 支持的 kafka Java,Scala等 拉模型,支持TCP 确保在分区内对消息进行排序 不支持 支持,使用异步生产者 不支持 支持,您可以使用Kafka Streams过滤邮件 RocketMQ Java,C ++,Go 拉模型,支持TCP,JMS,OpenMessaging 确保严格的消息排序,并可以优雅地扩展 支持的 支持,使用同步模式以避免消息丢失 支持的 支持的基于SQL92的属性过滤器表达式
消息产品 | 服务器触发重新传递 | 消息存储 | 消息追溯 | 消息优先级 | 高可用性和故障转移 | 消息跟踪 | 组态 | 管理和操作工具 |
---|---|---|---|---|---|---|---|---|
ActiveMQ的 | 不支持 | 使用JDBC和高性能日志(例如levelDB,kahaDB)支持非常快速的持久性 | 支持的 | 支持的 | 支持,根据存储,如果使用kahadb,则需要ZooKeeper服务器 | 不支持 | 默认配置为低级别,用户需要优化配置参数 | 支持的 |
卡夫卡 | 不支持 | 高性能文件存储 | 支持的偏移量表示 | 不支持 | 支持,需要ZooKeeper服务器 | 不支持 | Kafka使用键值对格式进行配置。可以从文件或以编程方式提供这些值。 | 支持,使用terminal命令公开核心指标 |
RocketMQ | 支持的 | 高性能和低延迟的文件存储 | 支持的时间戳和偏移量2表示 | 不支持 | 支持的Master-Slave模型,没有其他套件 | 支持的 | 开箱即用,用户只需要注意几个配置 | 支持的富Web和终端命令,以公开核心指标 |