主流的消息队列

简介

目前市面上主流开源的消息队列主要RabbitMQ、RockectMQ、Kafka、ActiveMQ。这四种消息队列都是比较常见,下面我们从各个维度比较他们有缺点。

ActiveMQ

ActiveMQ作为"老古董",市面上用的已经不多。
社区: Apache
开发语言: Java
协议支持: 支持多种协议,包括REST,AMQP,XMPP等
客户端支持的语言: 基本支持Java
单机支持的吞吐量: 万级
消息延时: 毫秒级
消息可靠性: 低概率丢失
优势: 非常成熟,功能强大
劣势: 消息有丢失情况,社区活跃度低
应用场景: 主要用于解耦和异步,较少在大规模吞吐中使用

RabbitMQ

社区: Rabbit
开发语言: Erlang
协议支持: AMQP
客户端支持的语言: 基本支持Java
单机支持的吞吐量: 万级
消息延时: 微秒级
消息可靠性: -
优势: 性能极好,延时低,MQ功能完,管理界面非常好,社区活跃,互联网公司用的比较多
劣势: 由于追求性能,吞吐量低,erlang语言开发不容易定制开发,集群动态扩展麻烦
应用场景: 都有使用

RocketMQ

社区: 阿里
开发语言: Java
协议支持: 自定义
客户端支持的语言: 基本支持Java
单机支持的吞吐量: 十万级
消息延时: 毫秒级
消息可靠性: 结果配置,可以做到零丢失
可用性: 非常高,分布式架构
优势: MQ功能完备,分布式扩展性好,API简单,吞吐量大,分布式扩展方便,社区活跃
劣势: 不是标准的JMS接口,迁移不方便,技术有被抛弃风险
应用场景: 大规模吞吐量,复杂业务中

Kafka

社区: Apache
开发语言: Java&Scala
协议支持: 自定义
客户端支持的语言: 基本支持Java
单机支持的吞吐量: 十万级
消息延时: 毫秒级以内
消息可靠性: 结果配置,可以做到零丢失
可用性: 非常高,分布式架构,一个数据多个副本
优势: 超高吞吐量,ms的延时,极高的可用性和可靠性。分布式扩展方便
劣势: 有可能进行消息的重复消费
应用场景: 大数据实时计算,日志采集中被大规模使用,是业界的标准

总结

选择中间件的可以从这些维度来考虑:可靠性,性能,功能,可运维行,可拓展性,社区活跃度。目前常用的几个中间件,ActiveMQ作为"老古董",市面上用的已经不多,其它几种:

  • RabbitMQ:
    优点:轻量,迅捷,容易部署和使用,拥有灵活的路由配置
    缺点:性能和吞吐量不太理想,不易进行二次开发
  • RocketMQ:
    优点:性能好,高吞吐量,稳定可靠,有活跃的中文社区
    缺点:兼容性上不是太好
  • Kafka:
    优点:拥有强大的性能及吞吐量,兼容性很好
    缺点:由于"攒一波再处理"导致延迟比较高
相关推荐
Apache RocketMQ1 天前
云原生事件驱动引擎(RocketMQ-EventBridge)应用场景与技术解析
云原生·消息队列·rocketmq·事件驱动引擎
在未来等你6 天前
RabbitMQ面试精讲 Day 19:网络调优与连接池管理
性能优化·消息队列·rabbitmq·高并发·连接池·面试准备·网络调优
三木水7 天前
Spring-rabbit使用实战七
java·分布式·后端·spring·消息队列·java-rabbitmq·java-activemq
在未来等你7 天前
RabbitMQ面试精讲 Day 20:RabbitMQ压测与性能评估
性能优化·消息队列·rabbitmq·压力测试·性能测试·面试题
在未来等你8 天前
RabbitMQ面试精讲 Day 17:消费者调优与并发消费
中间件·面试·消息队列·rabbitmq
在未来等你10 天前
RabbitMQ面试精讲 Day 16:生产者优化策略与实践
中间件·面试·消息队列·rabbitmq
在未来等你11 天前
RabbitMQ面试精讲 Day 13:HAProxy与负载均衡配置
中间件·面试·消息队列·rabbitmq
在未来等你12 天前
RabbitMQ面试精讲 Day 14:Federation插件与数据同步
中间件·面试·消息队列·rabbitmq
在未来等你14 天前
RabbitMQ面试精讲 Day 11:RabbitMQ集群架构与节点类型
消息队列·rabbitmq·面试题·高可用·分布式系统·集群架构·节点类型