mq 消息队列 mqtt emqx ActiveMQ RabbitMQ RocketMQ

这篇具有很好参考价值的文章主要介绍了mq 消息队列 mqtt emqx ActiveMQ RabbitMQ RocketMQ。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

省流:

十几年前,淘宝的notify,借鉴ActiveMQ。京东的ActiveMQ集群几百台,后面改成JMQ。

Linkedin的kafka,因为是scala,国内很多人不熟。淘宝的人把kafka用java写了一遍,取名metaq,后来再改名RocketMQ。

正文:

总的来说,三大原因,语言、潮流、生态。

MQ这种东西,当你的消息量不大的时候,用啥是没多大区别的。特别是在过去20年里,有些阶段你没多少开源的MQ可选,所以最开始ActiveMQ和RabbitMQ还是很火的。

ActiveMQ、RabbitMQ、Kafka/RocketMQ,包括最近很火的pulsar,都非常有自己的特色,但是中间件这条线上,越早出现的,包袱越大,功能可能更多,比如ActiveMQ发展16年了,有大几百个功能,你能想到的所有消息领域的特性,它全都有,所有消息协议,都支持,搞的太重了。淘宝最早期的notify,就是借鉴ActiveMQ来的。

京东多年使用大规模的ActiveMQ集群10年前就有几百台了,然后发现古老的MQ模型,broker太重,量一大就卡(90%用ActiveMQ,但是有一定规模的数据量,这个问题都搞不好搞),然后慢慢发展了自己的JMQ。当年大家消息吞吐量都不大的时候,RabbitMQ就是神器,吞吐高出ActiveMQ几倍。但是慢慢大家发现,真有什么问题,团队没有erlang高手的话,没任何办法。比如说,一天几个亿、几十亿的消息,RabbitMQ一卡住,上下游所有交易订单处理,全都蹦掉了。

这个时候,linkedin搞出来了kafka天然支持消息堆积。然后很快twitter之类的公司快速跟上,在传输消息量非常大的几个领域,大数据的数据传输,日志和监控数据收集,等领域就称霸了。这个几年的代差,让大家不在一个起跑线上。紧接着淘宝尝试用kafka效果不错,但是搞不定scala,然后像从ActiveMQ发展出来了notify一样,基本上用java把kafka翻译了一遍,有了metaq,然后再逐渐出来了RocketMQ,发展了很多年,跟Kafka有一些小的差异,本质上还是那一套。

特别是最近这5-6年,随着整个互联网数据量的进一步增大,kafka/rocketmq在越来越丰富的场景下证明了分布式+支持堆积消息的优越性。大家积累了大量的经验和应用场景,然后发现日常做业务也可以放心大胆用mq处理了。

最后kafka和RocketMQ本身社区活跃,工具体系丰富,发展的很快(ActiveMQ中间尝试6.x版本浪费了很多年,最近两年跟hornetq合并才有新的发展方向。RabbitMQ中间也错失了一些机会。特别是RabbitMQ属于pivotal,spring品牌所在的公司,有个erlang的产品,跟其他的东西相比,蛮奇怪的,也许这也有些原因)。

总而言之,现在技术发展太快了,越是后起之秀,越能站上前辈的肩膀上,实现弯道超车。Kafka/RocketMQ,首先是基于JVM和Java,其次就是赶上了数据量爆发的快车道,最后是体系工具非常丰富,所以目前基本上占山为王(时至今日,几乎可以说,rpc和mq是分布式大厦门口最基础的两块砖)。

Kafka在stream流处理的道路上越走越远,下一波大的技术浪潮也许还能赶上。

个人非常看好pulsar,在kafka的基础上,进一步的分离计算和存储计算存储分离是下一代基础软件的大趋势),国内很多人在负责和参与这个新的MQ项目。

对了,前面提到的所有MQ,只有RabbitMQ是pivotal的,其他的都属于Apache开源基金会。

2021-04-08 https://www.zhihu.com/question/449611434/answer/1824707689

至于用不用erlang开发,只不过正巧emq和rabbitmq都是用erlang开发的,但是这个跟你准备用啥语言开发一点关系都没有。你的程序接收到MQTT消息后,就可以作为消息中间件的producer转发给消息中间件,消息中间件你可以选RabbitMQ,也可以选ActiveMQ,kafka等。这个消息中间件的作用是解耦消息解析和消息分发处理的业务逻辑,让其他应用作为消息中间件的consumer可以去订阅消费它所需的消息。

MQTT是IBM制定的物联网通信协议。可以先读下3.1.1版本MQTT协议标准文档,有中文版。emq是华为出来的人开发的遵循MQTT等协议的MQTT broker。官网有详细使用文档。有开源版本和收费的企业版。RabbitMQ不能称之为中间件,更准确的说法是AMQP(Advanced Message Queue 高级消息队列协议)协议的一种broker实现

https://www.zhihu.com/question/326354272/answer/698693509文章来源地址https://www.toymoban.com/news/detail-657219.html

到了这里,关于mq 消息队列 mqtt emqx ActiveMQ RabbitMQ RocketMQ的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ActiveMQ、RabbitMQ、Kafka、RocketMQ消息中间件技术选型

    消息中间件是分布式系统中重要的组件之一,用于实现异步通信、解耦系统、提高系统可靠性和扩展性。在做消息中间件技术选型时,需要考虑多个因素,包括可靠性、性能、可扩展性、功能丰富性、社区支持和成本等。本文将五种流行的消息中间件技术:ActiveMQ、RabbitMQ、

    2024年02月11日
    浏览(50)
  • SpringBoot整合消息中间件(ActiveMQ,RabbitMQ,RocketMQ,Kafka)

    消息的发送方:生产者 消息的接收方:消费者 同步消息:发送方发送消息到接收方,接收方有所回应后才能够进行下一次的消息发送 异步消息:不需要接收方回应就可以进行下一步的发送 什么是消息队列? 当此时有很多个用户同时访问服务器,需要服务器进行操作,但此

    2024年04月27日
    浏览(52)
  • MQ-消息队列-RabbitMQ

    MQ(Message Queue) 消息队列 ,是基础数据结构中“ 先进先出 ”的一种 数据结构 。指把要传输的数据(消息)放在队列中,用队列机制来实现消息传递——生产者产生消息并把消息放入队列,然后由消费者去处理。消费者可以到指定队列拉取消息,或者订阅相应的队列,由

    2024年02月09日
    浏览(52)
  • 【消息中间件】详解三大MQ:RabbitMQ、RocketMQ、Kafka

    作者简介 前言 博主之前写过一个完整的MQ系列,包含RabbitMQ、RocketMQ、Kafka,从安装使用到底层机制、原理。专栏地址: https://blog.csdn.net/joker_zjn/category_12142400.html?spm=1001.2014.3001.5482 本文是该系列的清单综述,会拉通来聊一下三大MQ的特点和各种适合的场景。 目录 1.概述 1.1.M

    2024年02月09日
    浏览(53)
  • MQ消息队列(主要介绍RabbitMQ)

    消息队列概念:是在消息的传输过程中保存消息的容器。 作用:异步处理、应用解耦、流量控制..... RabbitMQ:     SpringBoot继承RabbitMQ步骤:         1.加入依赖          2.配置         3.开启(如果不需要监听消息也就是不消费就不需要该注解开启)         4.创建队列、

    2024年02月11日
    浏览(54)
  • 消息中间件(RocketMQ、RabbitMQ、ActiveMQ、Redis、kafka、ZeroMQ)以及之间的区别

    目录 一、什么是消息中间件 二、消息中间件的组成 1、Broker 2、Producer 3、Consumer 4、Topic 5、Queue 6、Message 三、消息中间件通信模式 1、点对点(kafka不支持这种模式)  2、发布/订阅  四、消息中间件的作用 1、系统解耦 2、提高系统响应时间 3、为大数据处理架构提供服务 五、

    2024年01月25日
    浏览(53)
  • 消息队列-RabbitMQ:MQ作用分类、RabbitMQ核心概念及消息生产消费调试

    1)什么是 MQ MQ (message queue),从字面意思上看, 本质是个队列,FIFO 先入先出 ,只不过队列中存放的内容是 message 而已,还是一种 跨进程的通信机制 , 用于上下游传递消息 。在互联网架构中,MQ 是一种非常常见的上下游 “ 逻辑解耦 + 物理解耦” 的消息通信服务 。 使用了

    2024年02月20日
    浏览(47)
  • Java中如何使用消息队列实现异步(ActiveMQ,RabbitMQ,Kafka)

    在 Java 中,可以使用消息队列实现异步处理。下面是一个简单的示例代码,用于说明如何使用 ActiveMQ 实现消息队列异步处理: 添加 ActiveMQ 依赖 在 pom.xml 文件中添加以下依赖: 创建消息队列 创建一个名为 “TestQueue” 的消息队列,并配置 ActiveMQ 连接信息: 创建消息消费者

    2024年02月16日
    浏览(57)
  • 分布式消息队列:Kafka vs RabbitMQ vs ActiveMQ

    在现代分布式系统中,消息队列是一种常见的异步通信模式,它可以帮助系统处理高并发、高可用性以及容错等问题。在这篇文章中,我们将深入探讨三种流行的分布式消息队列:Apache Kafka、RabbitMQ和ActiveMQ。我们将讨论它们的核心概念、算法原理、特点以及使用场景。 随着

    2024年02月02日
    浏览(63)
  • RaabitMQ(三) - RabbitMQ队列类型、死信消息与死信队列、懒队列、集群模式、MQ常见消息问题

    这是RabbitMQ最为经典的队列类型。在单机环境中,拥有比较高的消息可靠性。 经典队列可以选择是否持久化(Durability)以及是否自动删除(Auto delete)两个属性。 Durability有两个选项,Durable和Transient。 Durable表示队列会将消息保存到硬盘,这样消息的安全性更高。但是同时,由于需

    2024年02月14日
    浏览(203)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包