源码结构介绍和导入|学习笔记

简介: 快速学习源码结构介绍和导入

开发者学堂课程【RocketMQ 知识精讲与项目实战(第三阶段)源码结构介绍和导入】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/704/detail/12458


源码结构介绍和导入


rocketMQ的源码分析。首先进入github里面rocketMQ官方分库先把源码下载。打开github里面rocketMQ的官方仓库之后可以看到有很多子工厂。

image.png

如何下载?需要点击clone ordownload按钮,之后获得当前当前仓库的git地址。拿到仓库的地址之后,可以使用本地的git客户端然后下载。或者直接点击download ZIP可以将源码打成一个压缩包去下载下来。

image.png

进入资料的文件夹当中,点击rocketMQ的源码,其中rocketMQ-master这里面就是已经下载好的源码。下载好之后会发现里面有很多的子工厂,这些子工厂分别都是什么意思?

源码的目录结构如下图所示。

image.png

上图中的第一个broker文件夹里存放的是消息中间件服务端相关的功能。broker相关的代码都在这个文件中。

第二个客户端client,client顾名思义是客户端,里面存放着消息生产者和消息消费者公共的一些类都放在client。

Common是公共包,里面就是所有工厂的公共包都在这里面。

Dev这个项目内只有一个文件,存放了一些开发者的信息,里面没有任何的源代码。

Distribution存放着我们在进行rocketMQ部署的时候可能会遇到的一些配置文件,这里面会有一些说明,给出了示例的说明文件可以使用。

Example是示例的意思,提供了rocketMQ官方的一些代码,可以使用这个代码直接测试功能。

Filter与filtersrv这两个都是和消息过滤有关的

Logappender顾名思义这个是与log有关的

Namesrv与nameserver有关,后面会重点分析nameserver基本的实现过程。

Openmassage是与消息开放标准相关的一些源代码。

Remoting内放的是远程netty通讯相关的代码

Srcutil放的是服务的工具类

Store是存储的意思,放的是和消息存储有关的一些代码

Style做的是checkstyle相关的一些代码

Text存放的是一些公共的测试类

Tools是所有项目的工具类,例如监控命令的相关实现类都在这里面有些相关的代码。

以上就是源代码目录的结构以及每一个项目的意思。

想要分析源代码,需要将源代码导入ID与工具中。

导入的方式:点击open,将目录直接粘贴到输入框中再点击OK就可以。

需要分析调试这个源代码需要具备一些条件,

当前rocketMQ的源码基于JDK1.8+写的,所以本地 JDK的环境必须是1.8.以及需要安装maven。第二是查看源码的一些工具。需要将上述的环境准备好。

准备好之后将源码导入IDE当中,因为这个项目是基于Melen构建的,这里需要进行Melen的安装。

复制命令:clean install-dmaven.Test.Skip=true 先执行清理,再执行安装的一个过程。

image.png

将命令复制之后,点击标签卡。点击第六个按钮,出现下图:

image.png

将复制的命令粘贴到输入框中执行即可。

dmaven.Test.Skip=true意思是安装的时候跳过测试。可以执行一下。

要去调试源码首先需要做准备工作。先去把源码调试的环境JDK1.8 MAVEN Intellij IDEA准备好。然后去下载源码,下载完成之后,将源码导入到工具当中。然后去执行一下安装。

以上就是调试源码的准备工作。

相关实践学习
消息队列RocketMQ版:基础消息收发功能体验
本实验场景介绍消息队列RocketMQ版的基础消息收发功能,涵盖实例创建、Topic、Group资源创建以及消息收发体验等基础功能模块。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
6月前
|
前端开发 Python
我们从`reportlab.pdfgen`模块中导入了`canvas`。这个模块提供了创建PDF文件所需的基本功能。
我们从`reportlab.pdfgen`模块中导入了`canvas`。这个模块提供了创建PDF文件所需的基本功能。
|
8月前
|
存储 安全 数据处理
文件I/O:基础与实战
文件I/O:基础与实战
|
8月前
|
SQL 数据采集 Java
Java【代码分享 02】商品全部分类数据获取(建表语句+Jar包依赖+树结构封装+获取及解析源代码)包含csv和sql格式数据下载可用
Java【代码分享 02】商品全部分类数据获取(建表语句+Jar包依赖+树结构封装+获取及解析源代码)包含csv和sql格式数据下载可用
87 0
|
Unix Windows
Notepad++简单使用(删除一行数据)
Notepad++简单使用(删除一行数据)
150 1
|
JavaScript
js基础笔记学习115-对象的结构2
js基础笔记学习115-对象的结构2
64 0
js基础笔记学习115-对象的结构2
|
JavaScript
js基础笔记学习114-对象的结构1
js基础笔记学习114-对象的结构1
81 0
js基础笔记学习114-对象的结构1
|
开发者 Python
导入模块 | 学习笔记
快速学习导入模块
导入模块 | 学习笔记
|
前端开发 JavaScript 开发者
页面-项目结构&页面结构|学习笔记
快速学习 页面-项目结构&页面结构
页面-项目结构&页面结构|学习笔记
|
开发者 Python
导入模块的五种方法| 学习笔记
快速学习导入模块的五种方法
|
前端开发 开发者
less-导入|学习笔记
快速学习 less-导入
140 0

相关实验场景

更多