Kafka与RabbitMQ、ActiveMQ协议区别

对于Kafka与RabbitMQ、ActiveMQ协议,它们具体的区别如下:

activemq:
        activemq支持主从复制、集群。但是集群功能看起来很弱,只有failover功能,即我连一个失败了,可以切换到其他的broker上。这一点貌似不太科学。假设有三个broker,其中一个上面没有consumer,但另外两个挂了,消息会转到这个上面来,堆积起来。看样子activemq还在升级中。
        activemq工作模型比较简单。只有两种模式 queue,topics

rabbitmq:
        rabbitmq用erlang写的。安装完才10m不到,在windows上使用也非常方便,在这点上完爆了activemq,java又臭又长没办法啊。rabbitmq给我感觉更像oracle,功能非常强大。安装完,也有实例的概念,可以像建数据库一样,建实例,建用户划权限。同时监控系统也很好用。这些都是好处,同时也是累赘,整体上来说rabbitmq比activemq复杂太多了

kafka:
        kafka号称为分布式而生。和activemq以及rabbitmq这些企业级队列而言确实更有分布式系统的优势
        kafka的优势在于: 传统的消息队列只有两种模式,要么是queue,要么是publish-subscribe发布订阅。在queue模式中,一组消费者消费一个队列,每条消息被发给其中一个消费者。在publish-subscribe模式中,消费被广播给所有消费者。queue模式的好处在于,他可以把消费分发给一组消费者,从而实现消费者的规模化(scale);问题在于,这样一个消息只能被一组消费者消费,一旦消费,消息就没有了。publish-subscribe的好处在于,一个消息可以被多组消费者消费;问题在于,你的消费者没法规模化,即不可能出现多个消费者订阅同一个topic,但每个消费者只处理一部分消息

总结:
        系统吞吐量: 
                Kafka > RabbitMQ > ActiveMQ

        持久化消息(宕机消息不丢失):
                RabbitMQ > ActiveMQ

        高并发:
                RabbitMQ(Erlang语言开发) > ActiveMQ

        集群负载均衡:
                Kafka > Rabbit

        兼容性:
                ActiveMQ(与Java完美兼容) > RabbitMQ

更多技术资讯可关注:itheimaGZ获取

相关推荐