一、RocketMQ 的介绍
-
RocketMQ
Apache RocketMQ 是一款低延迟、高并发、高可用、高可靠的分布式消息中间件。消息队列 RocketMQ 可为分布式应用系统提供异步解耦和削峰填谷的能力,同时也具备互联网应用所需的海量消息堆积、高吞吐、可靠重试等特性。
-
RocketMQ 概念
- Producer(生产者):
生产者负责生成并发送消息到消息队列。通常,生产者是业务系统的组件,例如订单处理系统生成订单消息并发送到队列中。 - Consumer(消费者):
消费者从消息队列中获取并处理消息。消费者可以是多个,并且可以分为两种类型:
Push Consumer:主动接收消息。
Pull Consumer:主动从队列中拉取消息。 - Topic(主题):
Topic 是消息的逻辑分类,每个 Topic 代表一个消息类别。生产者将消息发送到特定的 Topic,消费者订阅并消费特定 Topic 下的消息。 - Message(消息):
消息是 RocketMQ 传输的最小单位。消息体可以是任意的字节数组,通常为 JSON、XML 或其他序列化格式。 - Broker(消息代理):
Broker 是消息中间件的核心组件,负责接收、存储、转发消息。Broker 通过 Topic 和队列管理消息,并确保消息的可靠传输。 - NameServer:
NameServer 是轻量级的服务发现和路由管理组件,Broker 和生产者、消费者通过它来发现彼此的地址,并完成消息的路由。 - Queue(队列):
每个 Topic 可以有多个队列(Partition),消息会根据一定的策略分发到不同的队列中。多个消费者可以并行消费同一个 Topic 下的不同队列,提高吞吐量。 - Tag(标签):
Tag 是用于对消息进行进一步分类的标记,帮助消费者过滤消息。例如,在一个 Topic 下,可以根据不同的标签过滤出特定类型的消息进行消费。 - Order Message(顺序消息):
顺序消息是 RocketMQ 提供的一种消息投递方式,保证同一生产者发送的消息按顺序到达同一消费者。 - Transactional Message(事务消息):
RocketMQ 支持分布式事务消息。生产者可以发送半消息(half message),消费者暂时不会消费,直到生产者确认事务提交,RocketMQ 才会将消息推送给消费者。
- Producer(生产者):
-
为什么 RocketMQ
在阿里孕育 RocketMQ 的雏形时期,我们将其用于异步通信、搜索、社交网络活动流、数据管道,贸易流程中。随着我们的贸易业务吞吐量的上升,源自我们的消息传递集群的压力也变得紧迫。
根据我们的研究,随着队列和虚拟主题使用的增加,ActiveMQ IO 模块达到了一个瓶颈。我们尽力通过节流、断路器或降级来解决这个问题,但效果并不理想。于是我们尝试了流行的消息传递解决方案 Kafka。不幸的是,Kafka 不能满足我们的要求,其尤其表现在低延迟和高可靠性方面,详见下文。在这种情况下,我们决定发明一个新的消息传递引擎来处理更广泛的消息用例,覆盖从传统的 pub/sub 场景到高容量的实时零误差的交易系统。
Apache RocketMQ 自诞生以来,因其架构简单、业务功能丰富、具备极强可扩展性等特点被众多企业开发者以及云厂商广泛采用。历经十余年的大规模场景打磨,RocketMQ 已经成为业内共识的金融级可靠业务消息首选方案,被广泛应用于互联网、大数据、移动互联网、物联网等领域的业务场景。
二、RocketMQ 的安装
-
本地部署
下载地址-
Window
下载完后解压到自定义目录,MQ 解压路径\rocketmq-all-5.3.0-bin-release;
{% note warning modern %}
注意 (Windows11 系统解压路径不要出现空格)
{% endnote %}
{% note warning
-