ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

主流消息队列有哪些?

2022-04-23 16:31:46  阅读:207  来源: 互联网

标签:Java 哪些 队列 Kafka 主流 消息 com RocketMQ


大家好,我是【架构摆渡人】,一只十年的程序猿。这是消息队列的第一篇文章,这个系列会给大家分享很多在实际工作中有用的经验,如果有收获,还请分享给更多的朋友。

ActiveMQ

ActiveMQ是一个很老的消息队列了,我也只是在很老的一些系统里面见过它。无论是性能还是功能方面,确实没有跟上时代的节奏,社区也不活跃。大家可以去看看,在Github上的关注也就2K的数量。

对Java开发者来说,它最大的有点就是用Java开发的,阅读源码比较方便,其他就没啥优点了,所以也不建议大家现在用ActiveMQ来实现业务。

主页:https://github.com/apache/activemq

RabbitMQ

RabbitMQ使用的还是比较多的,至少在目前很多公司里也都在使用它。也有一定的社区活跃度,而且目前也一直在不断地更新优化。在Github上的关注已经达到了9.4K的数量,比ActiveMQ高了几倍。

对Java开发者来说,它最大的缺点就是开发语言不是Java,而是采用Erlang语言编写,阅读源码不是很方便。

主页:https://github.com/rabbitmq

Kafka

Kafka我相信大家就算没用过,也应该听说过。比如ELK中的K就是Kafka,在日志收集场景基本上都是用Kafka,因为有Kafka的强大吞吐量和完整的生态圈。Kafka的社区活跃度非常高,在Github上的关注已经达到了21.7K的数量,可见使用的范围多广。

对Java开发者来说,Kafka的源码阅读起来也是比较方便的,Kafka是Scala语言开发。

主页:https://github.com/apache/kafka

RocketMQ

RocketMQ是阿里开源的一款消息队列,目前已入驻Apache。RocketMQ的性能和稳定性肯定没得说,毕竟经历过阿里整个双十一大促的洗礼。我一直也都是在用RocketMQ,但是用的是云服务,省去了部署维护等一系列问题,非常方便,就是费用多点。

RocketMQ的社区也是相当的活跃,关注度也很高,在Github上的关注已经达到了17K的数量。对Java开发者来说,RocketMQ是最方便我们学习的一款消息队列,因为它是Java开发的,所以源码阅读起来会比较方便。

主页:https://github.com/apache/rocketmq

选型建议

前面只是给大家列了一下目前一些在用的消息队列,每款消息队列都有自己独特的设计和更适合的使用场景。如果是Java开发者,要在项目中使用消息队列,我会建议大家用RocketMQ和Kafka。

如果是要收集日志或者是业务数据的埋点上报,可以用Kafka。用Kafka的原因在于Kafka性能好,吞吐量高,单机吞吐量能够在10万级以上。

同时Kafka的生态也比较全,当你收集的日志想要写入ES中,Kafka Connector就能够快速支持。跟各种其他框架都能够快速对接。

其次,日志收集类的对时延的要求没有那么高,为了提高性能,Kafka发送消息的时候并不是每有一条就直接发送的,而是会采用批处理的方式一起发送,这样能够提高性能,所以时延相对来说会有点高,但是对应并发量足够大的系统,其实还好,基本上毫秒级别就可以产生万级以上的消息了。

如果是业务类的场景,比如电商场景,那么建议使用RocketMQ。RocketMQ的性能也很好,单机吞吐量也能够达到10万级。而且RocketMQ还有丰富的消息类型来支撑多变的业务场景,比如顺序消息,延迟消息,事务消息等。在线业务对于时延也会比较敏感,所以RocketMQ适合在线业务场景。

日志类的,大数据类的都会有专门的岗位去负责,对于我们业务开发的同学来说,只需要关注业务层面要用的中间件即可,所以RocketMQ我们是必须要去学习和使用的,而且面试中也经常会问。

原创:架构摆渡人(公众号ID:jiagoubaiduren),欢迎分享,转载请保留出处。

本文已收录至学习网站 http://cxytiandi.com/ ,里面有Spring Boot, Spring Cloud,分库分表,微服务,面试等相关内容。

标签:Java,哪些,队列,Kafka,主流,消息,com,RocketMQ
来源: https://www.cnblogs.com/jiagoubaiduren/p/16182754.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有