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

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

开发者学堂课程【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一站式入门使用
从源码编译、部署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
相关文章
|
5天前
|
API 开发工具 数据库
OneCode2.0源码结构分析
OneCode12月10日正式更新了其V2.0版本。从OneCode的季度版本生命中,可以看到2.0版本还是一个重量级的版本,笔者在收到2.0更新后第一时间下拉了最新的代码。在参考了OneCode 的技术说明后,根据包结构来分析一下OneCode2.0的结构。
|
5天前
|
运维 Shell Python
第九章 Python自定义模块及导入方法
第九章 Python自定义模块及导入方法
|
5天前
|
存储 Oracle Java
Java 包和 API 深度解析:组织代码,避免命名冲突
Java 中的包 用于将相关的类分组在一起。可以将其视为文件目录中的一个文件夹。我们使用包来避免名称冲突,并编写更易于维护的代码。 包分为两类: 内置包(来自 Java API 的包) 用户定义的包(创建自己的包)
312 2
|
5天前
|
SQL 数据采集 Java
Java【代码分享 02】商品全部分类数据获取(建表语句+Jar包依赖+树结构封装+获取及解析源代码)包含csv和sql格式数据下载可用
Java【代码分享 02】商品全部分类数据获取(建表语句+Jar包依赖+树结构封装+获取及解析源代码)包含csv和sql格式数据下载可用
43 0
|
Dubbo Java 应用服务中间件
创建工程结构 | 学习笔记
快速学习创建工程结构。
62 0
创建工程结构 | 学习笔记
|
开发者 Python
导入模块的五种方法| 学习笔记
快速学习导入模块的五种方法
368 0
|
开发者 Python
导入模块 | 学习笔记
快速学习导入模块
131 0
导入模块 | 学习笔记
|
JSON 缓存 数据格式
由浅入深:Python 中如何实现自动导入缺失的库?
在写 Python 项目的时候,我们可能经常会遇到导入模块失败的错误:ImportError: No module named 'xxx' 或者 ModuleNotFoundError: No module named 'xxx' 。 导入失败问题,通常分为两种:一种是导入自己写的模块(即以 .py 为后缀的文件),另一种是导入三方库。
219 0
由浅入深:Python 中如何实现自动导入缺失的库?
|
Python
Python编程:动态导入模块
Python编程:动态导入模块