简单的对比三种生产上常用的MQ,提到这三种肯定很多人都使用过,下面针对他们的使用来做个对比。
ActiveMQ
作为老牌的消息队列中间件,只要使用在并发场景不是特别大的情况下,性能是非常好的,而且支持JMS规范。
而在集群方面一般采用的是zookeeper来进行心跳检查,主从的架构,或者是双活架构,通过network模式来实现分布式的集群,拓扑图如下
而kafka就是根据空中接力一样的模式来进行消息的处理
而kafka的依赖拓扑如下,通过多个node之间的replicate来实现多个机房之间的数据同步冗余
阿里开源的项目RocketMQ是基于nameservice基础上来替代zk的功能。集群架构有非常多的选择,多主多从等,冗余数据的binglog,
拓扑图如下,实现了主从自动切换,master与slaver之间切换。
RabbitMQ目前论性能,可靠性,rabbitMQ是最好的,而且支持集群,异地双活架构,非常灵活。
镜像队列来实现数据的100%的不丢失,针对rabbitMQ的基本概念以及其他两种常用的MQ对比,有一篇通俗易懂的文章可以参考