目 录CONTENT

文章目录

RocketMQ—初识

路口、下车
2026-01-18 / 0 评论 / 0 点赞 / 4 阅读 / 0 字
温馨提示:
本文最后更新于2026-01-18,若内容或图片失效,请留言反馈。 部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

什么是消息队列,RocketMQ有哪些优势?

消息队列Message Queue(MQ)

消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题。实现高性能,高可用,可伸缩和最终一致性架构。是大型分布式系统不可缺少的中间件。
目前在生产环境,使用较多的消息队列有ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ等。

消息队列能做什么事情?

  • 异构系统间调用解耦
    image-7moj.png
  • 基于”订阅发布“的1对多的数据分发
    image-b7kx.png
  • 同步转异步的消息处理
    image-olka.png
  • 削峰、限流、日志处理
    image-ah2f.png

我在什么情况下会选择使用RocketMQ

我们比较多款产品:Apache ActiveMQ、Kafka、RabbitMQ、RocketMQ

ActiveMQ:

http://activemq.apache.org/
Apache出品,历史悠久,支持多种语言的客户端和协议,支持多种语言Java, .NET, C++等,基于JMS Provider的实现
使用场景:啥都会点,但好像啥都没做好,不再推荐使用
image-ti67.png

Kafka:

http://kafka.apache.org/
是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写。Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理大规模的网站中的所有动作流数据(网页浏览,搜索和其他用户的行动),副本集机制,实现数据冗余,保障数据尽量不丢失;支持多个生产者和消费者
适用场景:瞬时大流量应用,对消息延迟不敏感的应用场景
image-5zrk.png

RabbitMQ:

http://www.rabbitmq.com/
是一个开源的AMQP实现,服务器端用Erlang语言编写,支持多种客户端,如:Python、
Ruby、.NET、Java、JMS、C、用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不错
适用场景:企业级应用,尤其是对数据可靠性要求高、对并发和延迟不敏感的用户。
image-1ghb.png

RocketMQ:

http://rocketmq.apache.org/
阿里开源的一款的消息中间件, 纯Java开发,具有高吞吐量、高可用性、适合大规模分布式系统应用的特点, 性能强劲(零拷贝技术),支持海量堆积, 支持指定次数和时间间隔的失败消息重发,支持consumer端tag过滤、延迟消息等,在阿里内部进行大规模使用,适合在电商,互联网金融等领域使用
适用场景:低延迟应用,瞬时大流量处理效率不如Kafka
image-h7z1.png

RocketMQ的几个重要概念

RocketMQ的前世今生

和大部分组件产生的原因类似,阿里巴巴内部为了适应淘宝 B2C 的更快、更复杂的业务,2001年启动了“五彩石项目”,阿里巴巴的第一代消息队列服务Notify就是在这个背景下产生的。
2010 年,阿里巴巴内部的 Apache ActiveMQ 仍然作为核心技术被广泛用于各个业务线,而顺序消息、海量消息堆积、完全自主控制消息队列服务,也是阿里巴巴同时期急需的。在这种背景下,2011年,MetaQ诞生。
2011年,LinkedIn将Kafka开源。2012年,阿里巴巴参考Kafka的设计,基于对MetaQ的理解和实际使用,研发了一套通用消息队列引擎,也就是 RocketMQ。自此才有了第一代真正的RocketMQ,2016年阿里云上线云RocketMQ消息队列服务。
2016年11月,阿里巴巴将RocketMQ捐献给Apache基金会。
Apache社区有一个很重要的理念:社区大于代码。虽然RocketMQ已经开源3年,在国内小有名气,而且在阿里巴巴被广泛应用并有较好的效果,但是依然不能达到 Apache优秀项目的标准。
在RocketMQ被捐献后,通过一系列的修改、评审、调整,悄悄升级至4.0版本,正式进入孵化阶段。
2017年09月25日,RocketMQ成功“毕业”(Apache社区项目孵化成功即为毕业),成为
Apache 顶级项目,它是国内首个互联网中间件在 Apache 的顶级项目,也是继ActiveMQ、Kafka后Apache家族中全新的一代消息队列引擎。

image-xelr.png
RocketMQ有很多优秀的特性,在可用性方面,RocketMQ强调集群无单点,任意一点高可用,
客户端具备负载均衡能力,可以轻松实现水平扩容;在性能方面,在天猫双11大促背后的亿
级消息处理就是通过RocketMQ提供的保障;在API方面,提供了丰富的功能,可以实现异步
消息、同步消息、顺序消息、事务消息等丰富的功能,能满足大多数应用场景;在可靠性方
面,提供了消息持久化、失败重试机制、消息查询追溯的功能,进一步为可靠性提供保障。

几个非常重要的概念

了解Rocket的诸多特性后,咱们来理解RocketMQ几个重要的概念

image-wvoz.png

  • 生产者组Producer Group:一个逻辑概念,在使用生产者实例的时候需要指定
  • 一个组名。一个生产者组可以生产多个Topic的消息。
  • 生产者实例Producer:一个生产者组部署了多个进程,每个进程都可以称为一个生产者实例。
  • 主题Topic:一个Topic代表消息的大类,比如“财政数据”Topic、“商城订单”Topic,一个Topic下可以拥有多个队列Queue
  • 标签Tag:二级分类,对topic的进一步细化,用于区分同一个主题下的不同业务的消息,例如:“财政数据”的Tag可以有“计划”、“指标”、“支付”,“商城订单”的Tag可以有“线上订单”、“线下订单”...。
  • 消息Message:具体的数据消息,每个message必须指定Topic
  • 队列Queue:Queue就是消息队列的物理通信通道,消息采用FIFO(先进先出)模式传输,负责向消费者Push(推送)数据,或者由消费者直接Pull(拉取)
  • 消费者组Consumer Group:一个逻辑概念,在使用消费者时需要指定一个组名。一个消费者组可以订阅多个Topic。
  • 消费者实例Consumer:一个消费者组程序部署了多个进程,每个进程都可以称为一个消费者实例。
0

评论区