特性

activeMQ

rabbitMQ

rocketMQ

kafka

单机吞吐量

万/秒

万/秒

10万/秒

10万/秒

topic对吞吐量的影响

topic达到几百/几千个级别,吞吐量会有小幅度下降;
这是roket最大的优势,所以非常适用于支持大批量的topic

topic可以达到几十/几百个级别,吞吐量会有大幅度下降;
kafka不适用于大批量topic场景,除非加机器

时效性

毫秒

微妙
这是rabbit最大是优势:延迟低

毫秒

毫秒

可用性

高。主从架构

高。主从架构

非常高,分布式

非常高,分布式。数据多副本,不会丢失数据,不会不可用

可靠性

有较低的概率丢失数据


经配置优化可达到0丢失

经配置优化可达到0丢失

功能特性

功能齐全,但已经不怎么维护

erlang开发,并发强,性能极好,延迟低

MQ功能较为齐全,扩展好

功能简单,主要用于大数据实时计算和日志才加,事实标准

 

1.activeMQ

(1)优点:技术成熟,功能齐全,历史悠久,有大量公司在使用

(2)缺点:偶尔会有较低概率丢失数据,而且社区已经不怎么维护5.15.X版本

(3)使用场景:主要用于系统解耦和异步处理,不适用与大数据量吞吐情况。互联网公司很少适用。

 

2.rabbitMQ

(1)优点:吞吐量高,功能齐全,管理界面易用,社区活跃,性能极好

(2)缺点:吞吐量只是万级,erlang难以二次开发和掌握;集群动态扩展非常麻烦;

(3)适用场景:吞吐量不高而要求低延迟,并且不会频繁调整和扩展的场景。非常适用国内中小型互联网公司适用,因为管理界面非常友好,可以在界面进行配置和优化/集群监控。

 

3.rocketMQ

(1)优点:支持百千级大规模topic。吞吐量(十万级,日处理上百亿)。接口易用。分布式易扩展,阿里支持。Java开发易于掌控。

(2)缺点:与阿里(社区)存在绑定。不兼容JMS规范。

(3)使用场景:高吞吐量

 

4.kafka

(1)优点:超高吞吐量,超高可用性和可靠性,分布式易扩展

(2)缺点:topic支持少,MQ功能简单,消息可能会重复消费影响数据精确度

(3)使用场景:超高吞吐量场景而数据精确到没那么高,天然适合大数据实时计算和日志采集场景。