| | apache/Kafa | RabbitMQ | apache/RocketMQ |
| ----------- | ------------------------------------------------------------ | :----------------------------------------------------------- | ------------------------------------------------------------ |
| GitHub star | 21.9k | 9.5k | 17.2k |
| 特点 | **它是一个分布式的,支持多分区、多副本,基于 Zookeeper 的分布式消息流平台**,它同时也是一款开源的基于发布订阅模式的消息引擎系统。 | | 它是纯 Java 开发,**具有高性能、高可靠、高实时、适合大规模分布式系统应用的特点** |
| 优点 | 1. 高吞吐、低延迟<br />2.高伸缩性<br />3.高稳定性<br />4.持久性、可靠性、可回溯性<br />5. 消息有序<br />6.有优秀的第三方kafka web界面 | 1. 支持几乎所有最受欢迎的编程语言:Java,C,C ++,C#,Ruby,Perl,Python,PHP等等;<br/>2. 支持消息路由:RabbitMQ 可以通过不同的交换器支持不同种类的消息路由;<br/>3. 消息时序:通过延时队列,可以指定消息的延时时间,过期时间TTL等;<br/>4. 支持容错处理:通过交付重试和死信交换器(DLX)来处理消息处理故障;<br/>5. 提供了一个易用的用户界面,使得用户可以监控和管理消息 Broker;<br/>6. 社区活跃度高。<br/> | 1.高吞吐:借鉴 Kafka 的设计,单一队列百万消息的堆积能力;<br/>2.高伸缩性:灵活的分布式横向扩展部署架构,整体架构其实和 kafka 很像;<br/>3. 高容错性:通过ACK机制,保证消息一定能正常消费;<br/>4. 持久化、可回溯:消息可以持久化到磁盘中,支持消息回溯;<br/>5. 消息有序:在一个队列中可靠的先进先出(FIFO)和严格的顺序传递;<br/>6. 支持发布/订阅和点对点消息模型,支持拉、推两种消息模式;<br/>7. 提供 docker 镜像用于隔离测试和云集群部署,提供配置、指标和监控等功能丰富的 Dashboard。<br/> |
| 缺点 | 1. 单机如果超过64个队列或者分区,Load会发生明显飙高的现象,队列越多,load越高,发送消息相应时间变长<br />2. 不支持消息路由,不支持延时发送,不支持消息重试<br />3. 社区更新较慢 | 1. Erlang开发,不利于做二次开发和维护<br />2. RabbitMQ吞吐量会低一些<br />3. 不支持消息有序、持久化不好、不支持消息回溯、伸缩性一般。 | 1. 不支持消息路由,目前是主要是Java 和c++(c++不成熟)<br /> |
评论