16年阿里将RocketMQ捐赠给了开源软件基金会Apache,开源路走在了前面
各类消息中间件对比
ActiveMQ
ActiveMQ是Apache出品的,最流行,能力强劲的开源消息总线。ActiveMQ是一个完全支持JMS1.1和J2EE1.4规范的JMS Provider实现,尽管JMS规范出台已经是很久的事情了,但是JMS在当今的J2EE应用中间仍然扮演者特殊的地位。
特性
ActiveMQ支持多种语言和协议编写客户端:Java、C、C++、C#、Perl、Python、PHP
支持应用协议:OpenWire、Stomp REST、WS NotificationXMPP、AMQP
ActiveMQ完全支持JMS1.1和J2EE1.4规范(持久化,XA消息,事务)
ActiveMQ还支持一些高级特性:虚拟主题、组合目的、镜像队列
RabbitMQ
RabbitMQ是一个开源的AMQP实现,服务端用Erlang语言编写。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。
特性:
支持多种客户端,如Python、Ruby、.NET、Java、JMS、C、PHP、Actionscript等
AMQP的完整实现(vhost、Exchange、Binding、Routing Key等)
支持事务、发布确认
支持消息持久化
Kafka
Kafka是一个高吞吐量的分布式发布订阅消息系统,是一个分布式的、分区的、可靠的分布式日志存储服务。它公国一种独一无二的设计提供了一个消息系统的功能。
Kafka本身不是一个严格意义上的消息中间件,它本身是用来做日志储存的。所以kafka对消息的顺序要求的非常严格。
特性
Kafka通过O(1)的磁盘数据结构提供消息的持久化,这种结构对于及时数以TB的消息存储也能够保持长时间的稳定性能。Kafka储存算法在持久化方面做得非常好,即使面对TB级别的消息(日志)数据也能给偶偶保持长时间的稳定。
高吞吐量:即使是非常普通的硬件。Kafka也可以支持每秒数百万的消息。
kafka支持分区(Partition)、消费者分组(Consumer Group)