现在市面上的消息中间件种类很多,常用的大致有4种,分别是kafka、activemq、rabbitmq、rocketmq。 那么kafka、activemq、rabbitmq、rocketmq都有什么优缺点?怎么技术选型呢?
1. 对比
| 特性 | activemq | rabbitmq | rocketmq | kafka |
|---|---|---|---|---|
| 单机吞吐量 | 万级 | 万级 | 10万级 | 10万级 |
| topic数量对吞吐量的影响 | 无影响 | 无影响 | topic 可以达到几百/几千的级别,吞吐量会有较小幅度的下降 | topic 从几十到几百个时候,吞吐量会大幅度下降,在同等机器下,kafka 尽量保证 topic 数量不要过多 |
| 消息存储 | 内存、磁盘、数据库。支持少量堆积 | 内存、磁盘。支持少量堆积 | 磁盘。支持大量堆积 | 内存、磁盘、数据库。支持大量堆积 |
| 消息事务 | 支持 | 支持 | 支持 | 支持 |
| 消息延时 | ms 级 | 微秒级 | ms 级 | ms 级 |
| 可用性 | 高 (主从) | 高 (主从) | 非常高 (分布式) | 非常高 (分布式) |
| 消息可靠性 | 可能会丢失 | 可能会丢失 | 不会丢失 | 不会丢失 |
| 多语言支持 | 支持 | 支持 | 只支持java | 支持 |
| 生产者消费者模式 | 支持 | 支持 | 支持 | 支持 |
| 发布订阅模式 | 支持 | 支持 | 支持 | 支持 |
| 请求回应模式 | 支持 | 支持 | 不支持 | 不支持 |
| 管理界面 | 一般 | 好 | 无 | 一般 |
| 消息重复 | 最少一次 | 最少一次 最多一次 |
最少一次 | 最少一次 最多一次 |