ActiveMQ和RocketMQ比较_java

常用消息队列

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---------------------

推荐阅读: