常见MQ对比

目前主流的MQ主要有:

  • RabbitMQ
  • RocketMQ
  • kafka
  • Activemq

MQ对比

MQ 描述
RabbitMQ erLang开发(高并发语音),对消息堆积的支持不算太好,当大量消息积压的时候,会导致Rabbit性能下降。每秒钟可以处理几万到几十万条消息。
RocketMQ java开发,面向互联网集群化功能丰富,对在线业务的响应时延做了很多的优化,大多数情况。而且由于是java开发,如果想进行定制化扩展也比较方便
Kafka Scala开发,面向日志功能丰富,性能最高。当你的业务场景中,每秒钟消息数量没有那么多的时候,kafka的时延反而会比较高,所以,Kafka不太适合在线业务场景。
Activemq java开发,简单,稳定,性能不如前面三个。小型系统用也ok,但是不推荐。

什么是消息队列(MQ)

MessageQueue 是一个广泛应用在互联网项目中且非常重要的技术, MessageQueue 通常被用来解决在高并发压力下类似于流量削峰、服务解耦、消息通讯、最终消息一致性等这样的问题。

主流MQ的优缺点

RabbitMQ RocketMQ Kafka Activemq
协议 AMQP AMQP 自行设计 AMQP
跨语言 支持 支持 支持 支持
优点 单机吞吐量:万级 健壮、稳定、医用、跨平台、支持多种语言; 功能支持: MQ功能完备 高扩展性: 支持事务 单机吞吐量:十万级 可用性: 非常高,分布式 架构: 消息可靠性高 功能支持:MQ功能完备 高扩展性:支持事务 单机吞吐量:百万级 可用性:分布式的非常高 依赖ZK可动态扩展节点高性能高吞吐,消息可指定追溯 单机吞吐量:万级 可用性:非常高 功能支持: MQ功能完备 高扩展性
缺点 Elang语言难度大,很难扩展,研发人员较少 目前只支持java及c++; 严格的顺序机制,不支持消息优先级,不支持标准协议 项目比较陈旧,官方社区在5.X之后对其维护越来越少
综合评价 适用于稳定性要求优先的企业级应用 阿里系,国内互联网公司使用居多 在日志和大数据方向使用较多 小型系统比较适用,但是因为维护越来越少,建议不用

参考

https://juejin.cn/post/6896744901665521677

Kafka:

https://juejin.cn/post/6844903495670169607

RabbitMq:

https://juejin.cn/post/6928281243708555272

关注和赞赏都是对小欧莫大的支持! 🤝 🤝 🤝
公众号