搭建源码调试环境—RocketMQ源码分析(一)

简介: 在正式开始搭建调试环境之前,我们先了解一下RockeMQ源码的整体架构。这是因为掌握了整体架构,可以让我们迅速了解各个方面的特性,并且可以方便我们后续快速定位功能模块对应的代码文件。话不多说,我们开始看RocketMQ目录结构。

你好,我是程序员Alan,很高兴遇见你。

一、RocketMQ目录结构

在正式开始搭建调试环境之前,我们先了解一下RockeMQ源码的整体架构。

这是因为掌握了整体架构,可以让我们迅速了解各个方面的特性,并且可以方便我们后续快速定位功能模块对应的代码文件。话不多说,我们开始看RocketMQ目录结构。

acl: 权限控制。可以给话题指定权限,只有拥有权限的消费者才可以进行消费。

broker: RocketMQ 的 Broker 相关代码,用来启动 Broker 进程。Broker 就是用来收客户端发的消息、存储消息传、递消息给消费端的组件。

client:RocketMQ 的 Producer、Consumer 这些客户端的代码,用来生产消息、消费消息。

common:公共模块。

distribution:用来部署 RocketMQ 的,比如 bin 目录 ,conf 目录。

example: RocketMQ 的用例。

filter:RocketMQ 过滤器。

namesvr:NameServer 的源码。NameServer 就是所有 Broker 都需要注册的地方,注册中心。

remoting:RocketMQ 的远程网络通信模块。

srvutil:工具类。

store:消息存储。

style:代码检查。

tools:命令行监控工具相关。

二、获取RocketMQ源码

源码地址:https://github.com/apache/rocketmq/tree/rocketmq-all-5.0.0

我下载的是5.0.0版本,你也可以在github下载其他版本。

如果下载遇到困难,可以留言或者私信我。

三、导入源码

代码下载解压之后,使用IDEA工具导入。

四、下载依赖

先确认Maven目录地址,再刷新,等待依赖下载完成。

五、启动RocketMQ的NameServer

5.1 配置NameServer启动参数

5.1.1 Edit Configurations,配置 ROCKETMQ_HOME 环境变量

5.2 拷贝配置文件

Value 的文件夹是用来部署 RocketMQ 的,里面包括 bin 目录 ,conf 目录,store目录。

我们首先创建一个文件夹,并创建三个子文件夹,分别是 bin  ,conf ,store。

文件夹都创建好之后,我们把RocketMQ自带的配置文件拷贝过来。

需要拷贝的文件夹是源码目录 distribution 目录中的 broker.conf、logback_namesrv.xml、logback_broker.xml。

5.3 修改 logback 日志配置文件

打开 logback_namesrv.xml、logback_broker.xml, ${user.home} 全局替换为之前配置的 ROCKETMQ_HOME 目录

5.4 修改broker配置文件

打开 broker.conf 文件,把下面的配置拷贝进去。

namesrvAddr=127.0.0.1:9876

brokerIP1=127.0.0.1

storePathRootDir=D:/Project/ROCKETMQ_HOME/store

storePathCommitLog=D:/Project/ROCKETMQ_HOME/store/commitlog

storePathConsumeQueue=D:/Project/ROCKETMQ_HOME/store/consumequeue

storePathIndex=D:/Project/ROCKETMQ_HOME/store/index

storeCheckpoint=D:/Project/ROCKETMQ_HOME/store/checkpoint

abortFile=D:/Project/ROCKETMQ_HOME/store/abort


5.5 启动NameServer

六、启动RocketMQ的Broker

6.1 配置Broker的启动参数

6.2 启动Broker

6.3 查看启动日志

打开 ROCKETMQ_HOME /logs/rocketmqlogs 目录下的 broker.log 或者 namesrv.log 文件看启动的详细日志。

七、测试生产消息

7.1 我们可以直接使用源码自带的示例来做测试。

7.2 打开 Producer.java, 设置 name server addresses

7.3 启动 Producer

7.4 成功发送消息

八、测试消费消息

我们继续使用自带的测试用例。

8.2 打开 Consumer.java, 设置 name server addresses

8.3 启动消费者

8.4 成功消费消息

九、使用RocketMQ Dashboard 查看 RocketMQ运行情况

站在巨人的肩膀上

  • 悟空聊架构
相关实践学习
RocketMQ一站式入门使用
从源码编译、部署broker、部署namesrv,使用java客户端首发消息等一站式入门RocketMQ。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
19天前
|
消息中间件 Java API
RocketMQ事务消息, 图文、源码学习探究~
介绍 RocketMQ是阿里巴巴开源的分布式消息中间件,它是一个高性能、低延迟、可靠的消息队列系统,用于在分布式系统中进行异步通信。 从4.3.0版本开始正式支持分布式事务消息~ RocketMq事务消息支持最终一致性:在普通消息基础上,支持二阶段的提交能力。将二阶段提交和本地事务绑定,实现全局提交结果的一致性。 原理、流程 本质上RocketMq的事务能力是基于二阶段提交来实现的 在消息发送上,将二阶段提交与本地事务绑定 本地事务执行成功,则事务消息成功,可以交由Consumer消费 本地事务执行失败,则事务消息失败,Consumer无法消费 但是,RocketMq只能保证本地事务
|
19天前
|
Java API 网络架构
关于 Spring Integration 你知道多少,包含集成MQTT案例讲述及源码3
关于 Spring Integration 你知道多少,包含集成MQTT案例讲述及源码
206 0
关于 Spring Integration 你知道多少,包含集成MQTT案例讲述及源码3
|
19天前
|
消息中间件 Apache 开发工具
RocketMQ-初体验RocketMQ(08)-IDEA拉取调测RocketMQ源码
RocketMQ-初体验RocketMQ(08)-IDEA拉取调测RocketMQ源码
41 0
|
18天前
|
消息中间件 存储 RocketMQ
RocketMQ源码分析之事务消息实现原理下篇-消息服务器Broker提交回滚事务实现原理
RocketMQ源码分析之事务消息实现原理下篇-消息服务器Broker提交回滚事务实现原理
|
19天前
|
消息中间件 Apache RocketMQ
电子好书发您分享《Apache RocketMQ 源码解析》
电子好书发您分享《Apache RocketMQ 源码解析》
124 1
|
11天前
|
消息中间件 小程序 网络性能优化
蓝易云 - 直播小程序源码有用的协议知识:MQTT协
在直播小程序源码中,MQTT协议可以用于实现实时消息推送,如弹幕、聊天消息、礼物信息等。通过使用MQTT协议,可以确保消息的实时性和可靠性,从而提高用户体验。
49 0
|
19天前
|
消息中间件 Shell
rabbitmq安装erlang环境后没生效
rabbitmq安装erlang环境后没生效
775 7
|
6月前
|
消息中间件 中间件 Kafka
RocketMQ源码(二)消息消费的模式到底是Push还是Pull?
RocketMQ源码(二)消息消费的模式到底是Push还是Pull?
92 1
|
19天前
|
消息中间件 Java RocketMQ
【深度挖掘 RocketMQ底层源码】「底层源码挖掘系列」抽丝剥茧贯穿RocketMQ的消费者端的运行核心的流程(Pull模式-下)
【深度挖掘 RocketMQ底层源码】「底层源码挖掘系列」抽丝剥茧贯穿RocketMQ的消费者端的运行核心的流程(Pull模式-下)
15 1