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

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,分库分表,微服务,面试等相关内容。

主流消息队列有哪些?相关推荐

  1. 可消费消息数量_17 个方面,综合对比 主流消息队列

    一.资料文档 二.开发语言 三.支持的协议 四.消息存储 五.消息事务 六.负载均衡 七.集群方式 八.管理界面 九.可用性 十.消息重复 十一.吞吐量TPS 十二.订阅形式和消息分发 十三.顺序消息 ...

  2. 主流消息队列MQ对比

    本文将从多个维度综合对比Kafka.RabbitMQ.RocketMQ.ActiveMQ这4款当前最主流的MQ消息中间件产品,希望能为您的下一次产品的架构设计和MQ消息中间件选型提供参考依据. 特点 ...

  3. 消息队列设计的精髓基本都藏在本文里了

    当今市面上有很多主流的消息中间件,如老牌的ActiveMQ.RabbitMQ,炙手可热的Kafka,阿里巴巴自主开发的Notify.MetaQ.RocketMQ等.本文不会一一介绍这些消息队列的所有特 ...

  4. java队列_RPC远程调用和消息队列MQ的区别

    RPC和MQ同样都是用于分布式系统的两个很重要的技术,都有服务提供者.消费者的概念,可在一定程度上对系统进行解耦.但两者之间还是有区别的,本篇简单介绍~ 一.RPC RPC(Remote Proced ...

  5. 消息队列的使用场景_消息队列MQ的特点、选型及应用场景

    一.什么是消息队列 消息队列(Message Queue,简称MQ),指保存消息的一个容器,本质是个队列. 消息(Message)是指在应用之间传送的数据,消息可以非常简单,比如只包含文本字符串,也可 ...

  6. Redis消息队列发展历程

    简介:Redis是目前最受欢迎的kv类数据库,当然它的功能越来越多,早已不限定在kv场景,消息队列就是Redis中一个重要的功能.Redis从2010年发布1.0版本就具备一个消息队列的雏形,随着10 ...

  7. ActiveMQ学习总结(8)——消息队列设计精要

    2019独角兽企业重金招聘Python工程师标准>>> 消息队列已经逐渐成为企业IT系统内部通信的核心手段.它具有低耦合.可靠投递.广播.流量控制.最终一致性等一系列功能,成为异步R ...

  8. 【kafka】消息队列设计精要

    1.概述 转载:消息队列设计精要 好文章,建议大家去看原文. 消息队列已经逐渐成为企业IT系统内部通信的核心手段.它具有低耦合.可靠投递.广播.流量控制.最终一致性等一系列功能,成为异步RPC的主要手 ...

  9. RocketMQ4.X消息队列详细笔记

    人不能没有批评和自我批评 那样一个人就不能进步. 目录 JMS和消息中间件介绍 JMS消息服务和使用场景 消息中间件常见概念和编程模型 主流消息队列和技术选型讲解 基础介绍和阿里云服务器快速部署 Ro ...

最新文章

  1. C#设置本地网络(DNS、网关、子网掩码、IP)
  2. java如何把查到的对象集合放入 展示对象list中_Java面试整理-基础篇8.集合1
  3. maven打war包
  4. Win 11 真的要来了!微软宣布 Win10 将于 2025 年终止支持!
  5. lintcode 最长上升连续子序列 II(二维最长上升连续序列)
  6. 236.二叉树的最近公共祖先
  7. 微软拒绝修复滥用 MSTSC 的安全绕过缺陷
  8. RGB 与 RGBA 与 16进制 与 HSL 之间的简单转换
  9. 把docx格式的word文档转换为txt文件
  10. 微软官网免费下载win10系统
  11. 那些年,我们一起用过的测试工具
  12. layui 给table里面的添加图标_layui教程---table
  13. 首个AI公园探秘:身高体重一秒被曝,大爷大妈坐无人车玩疯了
  14. 守望先锋显示服务器异常,守望先锋错误代码含义及解决方法
  15. 单片机实验说明<四>矩阵键盘与LCD基本使用
  16. 对Git用户名与Github账户关系的理解
  17. 山回路转时时见,世事如棋局局新
  18. 一篇文章带你搞懂慢SQL以及优化的策略
  19. As rich as Crassus(扩展中国剩余定理)
  20. PPP模式与城市视频监控项目结合产效应

热门文章

  1. python使用pymodbus库进行modbus tcp通信
  2. 想用HTML5做一个逆战的网页,《逆战》之精绝古城·野人沟H5制作大揭秘
  3. go语言服务器 行情,Go语言在证券期货行情系统中的实践(32页)-原创力文档
  4. wps打印文章省纸省墨技巧最大限度的节约纸张资源
  5. 字符串拼接的四种方式详解,代码测试
  6. Java程序员薪资分几级?
  7. Linux下查看历史操作记录
  8. 为什么海南人的祖先多数都是从福建莆田甘蔗园村来的?
  9. 计算机魔数或内涵词(如何起一个优雅的网名)
  10. 【JZOJ 4637】 大鱼海棠