主流的消息队列

简介

目前市面上主流开源的消息队列主要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:
    优点:拥有强大的性能及吞吐量,兼容性很好
    缺点:由于"攒一波再处理"导致延迟比较高
相关推荐
happycao1232 天前
kafka 消息位移提交几种方式:消息重复消息、消息丢失的关键
中间件·kafka·消息队列
happycao1233 天前
kafka 消费者线程安全问题详细探讨
分布式·中间件·kafka·消息队列
爱桥代码的程序媛6 天前
鸿蒙OpenHarmony【轻量系统内核通信机制(消息队列)】子系统开发
单片机·消息队列·内核·harmonyos·鸿蒙·鸿蒙系统·openharmony
huisheng_qaq6 天前
【kafka-04】kafka线上问题以及高效原理
分布式·kafka·消息队列·零拷贝·kafka线上问题·顺序io
码上一元10 天前
消息队列:如何确保消息不会丢失?
kafka·消息队列·rocketmq
huisheng_qaq11 天前
【kafka-03】springboot整合kafka以及核心参数详解
spring boot·kafka·消息队列·topic·partition·kafka底层原理
青云交12 天前
大数据新视界 --大数据大厂之Kafka消息队列实战:实现高吞吐量数据传输
大数据·kafka·消息队列·高吞吐量·大数据新视界·技术奥秘·应用场景、新兴技术
huisheng_qaq13 天前
【kafka-01】kafka安装和基本核心概念
大数据·分布式·kafka·消息队列·消息中间件
开五档的蒙奇25 天前
【消息中间件】Kafka从入门到精通
kafka·消息队列