ActiveMq是Apache出品,最流行的,能力强劲的开源消息总线,并且它是一个完全支持JSM规范的消息中间件。
其丰富的API,多种集群构建模式使得它成为业界老牌消息中间件,在中小型企业应用广泛!
MQ衡量指标:服务性能,数据存储,集群架构
主备模式:

利用Zookeeper进行各个节点之间的协调,其中一台对外提供服务,另外一台不对外提供了,当master挂点之后,利用zookeeper选举,将另外一天slave切换至master从而实现高可用。
NetWork模式:

本质是两组主备模式通过网关集成的分布式集群。
Kafka是Linkedln开源的分布式发布-订阅 的消息系统,目前属于Apache顶级项目,Kafka主要的特点是基于Pull模式来处理消息消费,最求高吞吐量,一开始的目的就是用于日志手机和传输,0.8版本开始支持复制,不支持事务,对消息的重复,丢失,错误没有严格要求,适合数据量大的互联网公司。
集群模式:

分布式+数据副本,kafka是关注于性能的,对消息的可靠性不是很高。
RocketMQ:
阿里开源的消息中间件,目前已经孵化为Apache顶级项目,它是纯java开发,具有高吞吐量,高可用性,适合大规模分布式系统的应用的特点,RocketMq思路起源于Kafka,它对消息的可靠性传输以及事务性做了优化,目前在阿里集团广泛应用于交易,充值,流计算,消息推送,日志处理,bonglog分发等场景。

RocketMq支持分布式事务,主从切换,阿里的消费版是需要收费的。
RabbitMq:
它是使用Erlang语言开发的开源的消息队列系统,基于AMQP协议来实现,AMQP的主要特征是面向消息,队列,路由(点对点,发布订阅),可靠性,安全,AMQP协议更多应用于企业系统内,对数据一致性,稳定性,可靠性要求很高的场景,对性能和吞吐量的要求还在其次。

activemq性能不是很好,面对高并发的情况直接pass掉。
kafka性能好,但是不可靠
rocketmq高性能,可靠性,分布式事务,水平扩展,上亿级别的消息堆积,主从切换,痛点是商业版,收费。
rabbitmq主要特征是面向消息,队列,路由(点对点,发布订阅),可靠性,安全,性能比activemq好
具体的MQ的对比可参考:https://blog.csdn.net/apanious/article/details/51014396




