主流的消息队列

简介

目前市面上主流开源的消息队列主要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:
    优点:拥有强大的性能及吞吐量,兼容性很好
    缺点:由于"攒一波再处理"导致延迟比较高
相关推荐
狂野小青年12 小时前
在PHP Web开发中,实现异步处理有几种常见方式的优缺点,以及最佳实践推荐方法
消息队列·php·最佳实践·异步任务
苏生Susheng2 天前
【SpringBoot整合系列】Kafka的各种模式及Spring Boot整合的使用基础案例
java·spring boot·后端·spring·kafka·消息队列·并发
不会飞的小龙人3 天前
Kafka消息服务之Java工具类
java·kafka·消息队列·mq
忘忧人生5 天前
docker 安装 Rabbitmq 详解
docker·消息队列·rabbitmq
dvlinker5 天前
大数据技术Kafka详解 ⑥ | Kafka大厂面试题
大数据·kafka·消息队列·rabbitmq·分布式发布订阅系统·kfaka大厂面试题
小高不明7 天前
仿 RabbitMQ 消息队列5(实战项目)
java·spring boot·spring·消息队列·rabbitmq
龙哥·三年风水9 天前
麒麟操作系统-rabbitmq二进制安装
消息队列·延迟队列·麒麟
周全全10 天前
消息队列基础知识和主流消息队列对比
kafka·消息队列·rabbitmq·mq·队列
nangonghen11 天前
华为云kubernetes基于keda自动伸缩deployment副本(监听redis队列长度)
redis·消息队列·kubernetes·hpa·keda
刘什么洋啊Zz12 天前
RocketMQ及和Kafka的区别
分布式·kafka·消息队列·rocketmq