最近学习了一下MQ的相关知识,就目前最常用的4个MQ中间件做一个简单的总结,非常片面和不成熟,欢迎指正
1. ActiveMQ
优点:技术成熟;功能强大
缺点:小概率消息丢失;社区不活跃,版本维护周期长,有可能会发生无法解决的BUG;大吞吐量场景支持不够(只支持万级吞吐量)
2. RabbitMQ
优点:erlang语言开发,性能强大,延时低(微秒级);管理界面强大;开源社区活跃度很好
缺点:erlang语言开发,底层代码对于Java开发人员可读性不高;由于实现机制,导致对大吞吐量场景支持不够(只支持万级吞吐量);集群扩展不方便
3. RocketMQ
优点:接口简单易用;在阿里有过大规模应用,有品牌保障,能处理很多复杂的MQ业务场景;社区活跃度、维护周期还行;性能好,能处理大吞吐量场景;Java语言开发,集群扩展方便
缺点:没有按照JMS规范实现,有些特性化处理需要更改大量代码;社区维护人员单一,一旦阿里放弃这个项目,它就彻底没人维护了;
4. kafka
有点:社区活跃度高;善于处理大数据领域的日志采集和实时计算等场景,对于处理超大吞吐量业务场景有优势;分布式架构,可以任意扩展;大数据领域的标准中间件
缺点:核心功能较少;小概率会出现消息重复的问题;