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

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

开发者学堂课程【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版Serverless系列实例进行获取接入点、创建Topic、创建订阅组、收发消息、查看消息轨迹和仪表盘。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
数据采集 生物认证 数据库
CMS指纹识别
CMS指纹识别
732 0
CMS指纹识别
|
JavaScript 前端开发 Go
【智能合约】Go语言调用以太坊 | geth
目录 1. geth 简介 1.1 下载地址: 1.2 安装: 1.3 查看是否安装成功 2. geth命令介绍 3. geth常用命令 3.1 指定数据目录 --datadir 3.2 账户相关 3.3 控制台console: 3.4 删除数据: 3.5 help 3.6 常见错误 4. Go语言调用合约 4.1 启动rpc端口 4.2 Go调用以太坊 4.3 调用接口 net_version net_listening net_peerCount eth接口 personal接口 db接口 最后
1256 0
【智能合约】Go语言调用以太坊 | geth
|
存储 Kubernetes 数据安全/隐私保护
影片自由,丝滑流畅,Docker容器基于WebDav协议通过Alist挂载(百度网盘/阿里云盘)Python3.10接入
使用过NAS(Network Attached Storage)的朋友都知道,它可以通过局域网将本地硬盘转换为局域网内的“网盘”,简单理解就是搭建自己的“私有云”,但是硬件和网络成本都太高了,有点可望而不可及的意思。Alist开源库则可以满足我们,它能将公共网盘反过来变成一种联网的本地硬盘,使用Web页面来统一挂载和管理,网盘类型包含但不限于:百度网盘、阿里云盘、迅雷网盘等等。
影片自由,丝滑流畅,Docker容器基于WebDav协议通过Alist挂载(百度网盘/阿里云盘)Python3.10接入
|
Web App开发 编解码 测试技术
HandBrake 开源视频转码器、编码转换器、格式转换器
HandBrake 开源视频转码器、编码转换器、格式转换器 点击下图进入官网下载页面:https://handbrake.fr/downloads.php macOS 下可能会阻止安装! 其实也不是安装,是运行! 需要打开系统偏好设置》安全性与隐私》窗口下方会看到被阻止的程序,点击左下角解锁就可以了。
2703 0
|
机器学习/深度学习
神经网络的面试题--什么是Batch Size?为什么需要Batch Size
网传神经网络面试题什么是Batch Size?为什么需要Batch Size,先记录下来以备不时之需
603 0
|
算法 计算机视觉 索引
霍夫变换看不懂?小啾带你串一遍:OpenCV图形检测专题 这样学最简单【Python-Open_CV系列(十一)】(上)
霍夫变换看不懂?小啾带你串一遍:OpenCV图形检测专题 这样学最简单【Python-Open_CV系列(十一)】
555 0
霍夫变换看不懂?小啾带你串一遍:OpenCV图形检测专题 这样学最简单【Python-Open_CV系列(十一)】(上)
|
机器学习/深度学习 人工智能 编解码
瀚博首款AI推理芯片出炉,性能超越英伟达T4,年内即将量产
瀚博推出的 AI 推理芯片,性能超过英伟达最新的 A10 与 T4,同时使用成本还更低。
827 0
瀚博首款AI推理芯片出炉,性能超越英伟达T4,年内即将量产
|
存储 机器学习/深度学习 算法
FedDG:在连续频率空间中通过情景学习进行医学图像分割的联合域泛化
FedDG:在连续频率空间中通过情景学习进行医学图像分割的联合域泛化
700 0
FedDG:在连续频率空间中通过情景学习进行医学图像分割的联合域泛化