/ | RocketMQ | RabbitMQ | Kafka |
---|---|---|---|
所属公司 | Alibaba | Rabbit | Apache |
开发语言 | Java | Erlang | Scala |
客户端支持语言 | Java、C++(不成熟) | 几乎支持所有常用语言 | 官方支持java,开源社区有多种语言赝本 |
协议支持 | 自己定义一套 | 多协议支持:AMQP、XMPP、SMTP、STOMP | 自由协议、社区封装了HTTP协议支持 |
消息批量处理 | 支持 | 不支持 | 支持 |
消息推拉模式 | 多协议,pull&push均有支持 | 多协议,pull&push均有支持 | pull |
单机吞吐量 | 十万级 | 万级 | 十万级 |
消息延迟 | 比Kafka快 | 微妙级 | 毫秒级 |
速度 | 11.6 w/s | 2-5 w/s | 17.3 w/s |
持久化 | 磁盘文件 | 内存、文件,支持数据堆积,单数据堆积反过来影响生产效率 | 磁盘文件,只要磁盘容量够可以做到无限消息堆积 |
是否有序 | 有序 | 弱项有序智能使用一个Client | 多Client保证有序 |
管理界面 | 命令行界面 | 较好 | 官方提供命令行,yahoo开源Manager |
应用场景 | 金融互联网领域,最求高可靠高可用、高并发、低延迟 | 通用 | 日志收集领域 |
主要对比三个方面:性能、存储、集群
1)性能对比:
- 吞吐量RabbitMQ是万级的,RocketMQ和kafka是十万级的
- 消息延迟,RabbitMQ是微妙级别的,RocketMQ和kafka是毫秒级别
2)存储RabbitMQ是内存和文件,RocketMQ和kafka是文件(消息堆积能力强)
3)管理界面,RabbitMQ较好
4)支持语言,RabbitMQ多
5)社区RabbitMQ、kafaka活跃