常用消息队列
ActiveMQ、RocketMQ、Kafka比较
生产者消费者模式(Producer-Consumer)
ActiveMQ-支持,RocketMQ-支持,Kafka-支持。
发布订阅模式(Publish-Subscribe)
ActiveMQ-支持,RocketMQ-支持,Kafka-支持。
请求回应模型(Request-Reply)
ActiveMQ-支持,RocketMQ-不支持,Kafka-不支持。
API完备性
ActiveMQ-高,RocketMQ-高,Kafka-高。
多语言支持
ActiveMQ-支持,RocketMQ-只支持JAVA,Kafka-支持。
单机吞吐量
ActiveMQ-万级,RocketMQ-万级,Kafka-十万级。
消息延迟
ActiveMQ-无,RocketMQ-毫秒级,Kafka-毫秒级。
可用性
ActiveMQ-高(主从),RocketMQ-非常高(分布式),Kafka-非常高(分布式)。
消息丢失
ActiveMQ-低,RocketMQ-理论上不会丢失,Kafka-理论上不会丢失。
文档的完备性
ActiveMQ-高,RocketMQ-高,Kafka-高。
提供快速入门
ActiveMQ-有,RocketMQ-有,Kafka-有。
社区活跃度
ActiveMQ-高,RocketMQ-中,Kafka-高。
商业支持
ActiveMQ-无,RocketMQ-阿里云,Kafka-阿里云。
ActiveMQ、RocketMQ、Kafka总体来说:
ActiveMQ
历史悠久的开源项目,已经在很多产品中得到应用,实现了JMS1.1规范,可以和spring-jms轻松融合,实现了多种协议,不够轻巧(源代码比RocketMQ多),支持持久化到数据库,对队列数较多的情况支持不好。
RocketMQ
RocketMQ是阿里开源的消息中间件,目前在Apache孵化,使用纯Java开发,具有高吞吐量、高可用性、适合大规模分布式系统应用的特点。
RocketMQ思路起源于Kafka,但并不是简单的复制,它对消息的可靠传输及事务性做了优化,目前在阿里集团被广泛应用于交易、充值、流计算、消息推送、日志流式处理、binglog分发等场景,支撑了阿里多次双十一活动。
因为是阿里内部从实践到产品的产物,因此里面很多接口、API并不是很普遍适用。其可靠性毋庸置疑,而且与Kafka一脉相承(甚至更优),性能强劲,支持海量堆积。
Kafka
Kafka设计的初衷就是处理日志的,不支持AMQP事务处理,可以看做是一个日志系统,针对性很强,所以它并没有具备一个成熟MQ应该具备的特性。
Kafka的性能(吞吐量、tps)比RabbitMQ要强,如果用来做大数据量的快速处理是比RabbitMQ有优势的。
----------------------end---------------------
推荐阅读: