使用Idea调试RocketMQ源码教程

目录
  • 前言
  • 下载源码
    • 代码编译
  • 运行namesrv
    • 启动
  • 启动broker
    • 配置文件
    • 启动broker
  • 小结

前言

为了更好地了解RocketMQ,我打算看一看它的源码了。随着RocketMQ5.0版本的发布,应该有更多小伙伴在实际应用中选择RocketMQ。那么我们就从这一篇文章开始,逐步来了解RocketMQ的神秘源码吧!接下来我们先把调试环境搭建好。

下载源码

源码地址:github.com/apache/rock…

我们先把RocketMQ源码下载下来,为了方便一点,建议小伙伴先fork到自己的仓库,然后再通过git拉下来。

导入idea

我们通过idea把下载的源码导入:

有任何报红或者错误先不用管。

代码编译

不要直接打开namesrv找到main函数就运行,这样是跑不起来的,会产生以下错误:

我们找到源码所在的本地目录,或者直接在项目中打开Terminal:

首先执行java -version检查安装的java版本,建议该版本不能超过java 11,测试下来java 17是编译不了的。

如果版本没问题的话,执行mvn clean install -DskipTests编译该项目。

编译成功后,结果如下:

运行namesrv

设置ROCKETMQ_HOME

在启动namesrv之前,我们要先设置以下对应的环境变量ROCKETMQ_HOME,这个变量可以直接在启动配置里面设置。namesrv在启动的时候就会去ROCKETMQ_HOME/conf里面去找相应的配置,比如logback_namesrv.xml

  • 添加logback_namesrv.xml
  • 我们拉下来的项目中已经有现成的logback_namesrv.xml,所以我们只需要拷贝一下。从distribution/conf里面就可以找到logback_namesrv.xml,直接拷贝到我们指定的ROCKETMQ_HOME/conf路径中。

启动

直接在idea中点击run或者debug启动namesrv服务。

启动broker

设置环境变量ROCKETMQ_HOME和配置文件

同样的我们需要设置环境变量ROCKETMQ_HOME,目的和namesrv一样,是为了读取日志配置文件;另一个-c xx/xx/broker.conf是为了指定服务的配置文件。

配置文件

我们的broker启动需要两个配置文件,一个是日志配置文件logback_broker.xml,一个是broker.conf配置。这两个配置文件我们都可以从项目中的distribution/conf中找到,我们把找到的两个文件放到指定的路径下。broker.conf文件需要做一些简单的修改:

brokerClusterName = DefaultCluster
brokerName = broker-a
brokerId = 0
deleteWhen = 04
fileReservedTime = 48
brokerRole = ASYNC_MASTER
flushDiskType = ASYNC_FLUSH
# namesrv服务地址
namesrvAddr = 127.0.0.1:9876
# 运行自动创建topic,避免调试的时候麻烦
autoCreateTopicEnable = true
# 数据存储路径
storePathRootDir = /Users/zouwei/Documents/projects/github_project/rocketmq/data_store
# commitlog存储文件
storePathCommitLog = /Users/zouwei/Documents/projects/github_project/rocketmq/data_store/commitlog
# 消费队列存储文件
storePathConsumeQueue = /Users/zouwei/Documents/projects/github_project/rocketmq/data_store/consumequeue
# 索引存储文件
storePathIndex = /Users/zouwei/Documents/projects/github_project/rocketmq/data_store/index
# checkpoint存储文件
storeCheckpoint = /Users/zouwei/Documents/projects/github_project/rocketmq/data_store/checkpoint
# abort文件
abortFile = /Users/zouwei/Documents/projects/github_project/rocketmq/data_store/abort

小伙伴们需要根据自己的实际情况来修改上述配置。

启动broker

接下里,我们就可以通过idea来启动broker了,点击run或者debug按钮,最后broker启动成功。

为了更好地看到启动效果和相关配置,小伙伴们可以适当修改一下logback_broker.xml

    <logger name="RocketmqBroker" additivity="false">
        <level value="INFO"/>
        <appender-ref ref="STDOUT"/>
        <appender-ref ref="RocketmqBrokerAppender"/>
    </logger>

RocketmqBroker里面加上<appender-ref ref="STDOUT"/>,这样我们就可以在控制台中看到相关的日志了。

小结

至此,我们就完成了通过idea把RocketMQ项目导入并运行起来的操作,里面确实有一些比较小的坑,大概总结一下:

1.代码拉下来后不能直接运行,需要通过mvn clean install -DskipTests编译后才能运行,否则报错;

2.在编译前需要检查java版本,不能是过高的版本,比如java 17;

3.编译完成后,需要在启动配置中指定相关的环境变量ROCKETMQ_HOME,该变量是为了namesrvbroker服务找到日志配置文件;broker服务还要指定broker.conf配置文件;

4.broker服务最好配置一下autoCreateTopicEnable = true,避免后续调试的时候不方便;

5.所有的配置文件在拉下来的代码中都可以找到,相关路径为distribution/conf

6.把日志输出到控制台可以更好地了解服务启动的状态;

以上就是使用Idea调试RocketMQ源码教程的详细内容,更多关于Idea调试RocketMQ源码的资料请关注我们其它相关文章!

(0)

相关推荐

  • Idea中tomcat启动源码调试进入到tomcat内部进行调试的方法

    使用idea开发工具调试代码的时候,如果是java的web项目,使用的是tomcat作为web容器,打断点debug调试跟踪,当跟踪到org.apache.catalina包下的时候,则无法进入,这是因为idea运行的tomcat是通过插件的方式集成的,tomcat里面的lib包不再项目的依赖路径中,所以不能跟踪进去 首先在自己项目中被tomcat回调的接口实现类中,标记一个断点信息,通过idea启动web项目,当出现如图所示的断点信息的时候,因为断点位置标记的是tomcat回调的接口类,所以按

  • IDEA中Debug调试VUE前端项目调试JS只需两步

    目录 前言 第一步,找到jsdebug运行时 第二步.打断点.运行jsdubg项 结语 前言 有一个礼拜没发quarku+graalvm相关的内容了,因为博主在忙一个新的前端项目去了,从element-ui切换到antdv,也有很多新的东西需要一边啃文档一边输出,程序出现bug自是在所难免的,所以需要开发工具可以非常方便的debug程序. 在java开发中,debug就是一个debug启动按钮解决的事情,而在前端开发中,IDEA这个开发工具也提供了非常好用的jsdebug工具,博主的这个用法不是

  • 自带IDEA插件的阿里开源诊断神器Arthas线上项目BUG调试

    目录 前 Arthas简介 ArthasTunnel SpringBoot集成 IDEA插件 总结 前 记得之前写过一篇Arthas使用教程,通过使用Arthas我们既可以实现线上调试,还可以实现热修复.最近逛了下Arthas的官网,发现它已经支持直接集成到SpringBoot应用中去,并且还出了专用的IDEA插件.今天我们再来体验下它,看看它的功能是不是更强大了! SpringBoot实战电商项目mall(50k+star)地址:https://github.com/macrozheng/ma

  • 搭建RocketMQ在本地IDEA开发调试环境教程

    目录 前言 生成安装包 启动NameServer 启动broker 安装RocketMQConsole 尽情的DEBUG 前言 发现公司这边的消息中间件采用了aliyun的RocketMQ服务,熟悉开源的同学都知道,RocketMQ是国内最早一批捐献Apache并成功毕业的项目.架构设计参考了kafka的模式,所以如果你了解kafka的架构,对于RocketMQ就可以轻车熟路了,虽然参考了kafka,但是RocketMQ也有很多的升级,比如Broker的注册和发现就采用了内部的NameServe

  • IDEA调试功能使用总结(step over/step into/force step into/step out)

    目录 1.设置断点 2.开启调试会话 3.单步调试 3.1 step over 3.2 step into 3.3 Force step into 3.4 step out 3.5 Drop frame 4. 高级调试 4.1 跨断点调试 4.2 查看断点 4.3 设置变量值 1.设置断点 选定要设置断点的代码行,在行号的区域后面单击鼠标左键即可. 2.开启调试会话 点击红色箭头指向的小虫子,开始进入调试. IDE下方出现Debug视图,红色的箭头指向的是现在调试程序停留的代码行,方法f2()中

  • IntelliJ IDEA中如何调试Java Stream操作

    目录 插件:Java Stream Debugger 调试Stream操作 Stream操作是Java 8推出的一大亮点!虽然java.util.stream很强大,但依然还是有很多开发者在实际工作中很少使用,其中吐槽最多的一个原因就是不好调试,一开始确实是这样,因为stream这样的流式操作在DEBUG的时候,是一行代码,直接下一步的时候,其实一下就过去了好多操作,这样我们就很难判断到底是里面的哪一行出了问题.不过,现在的话,在强大的IDEA插件支持下,stream的调试其实也没那么难了,下面

  • 使用Idea调试RocketMQ源码教程

    目录 前言 下载源码 代码编译 运行namesrv 启动 启动broker 配置文件 启动broker 小结 前言 为了更好地了解RocketMQ,我打算看一看它的源码了.随着RocketMQ5.0版本的发布,应该有更多小伙伴在实际应用中选择RocketMQ.那么我们就从这一篇文章开始,逐步来了解RocketMQ的神秘源码吧!接下来我们先把调试环境搭建好. 下载源码 源码地址:github.com/apache/rock… 我们先把RocketMQ源码下载下来,为了方便一点,建议小伙伴先fork

  • 解决调试JDK源码时,不能查看变量的值问题

    前几天本来想以debug模式看一下JDK的源码,进入调试模式时才发现,根本看不到方法里面变量值的情况.为什么呢?JDK现在的版本中,编译过后,去除了里面的调试信息.解决办法是,编译那些类,使其带有调试信息,使用命令:javac -g 查看了一些相关资料,现将解决方法放到下面 1.在d:\的根目录下创建jdk7_src和jdk_debug目录. 2.在JDK_HOME目录下找到src.zip文件,并把它里面的文件解压到jdk7_src目录下,然后在解压后的目录中删除除了java.javax.org

  • 使用Vue3+ts 开发ProTable源码教程示例

    目录 前台实现 实现效果 技术栈 使用方法 ProTable 设计思路 编码风格 css 小知识 表格操作 小结 后期功能扩展 后台实现 数据库 mysql 新建项目 RESTful 风格的 URL 定义 Sequelize controller model router.js API 文档 Apifox ts用到的一些 前台实现 实现效果 技术栈 vue3 + typescript + element-plus 使用方法 <template> <el-tabs type="b

  • RocketMQ源码解析topic创建机制详解

    目录 1. RocketMQ Topic创建机制 2. 自动Topic 3. 手动创建--预先创建 通过界面控制台创建 1. RocketMQ Topic创建机制 以下源码基于Rocket MQ 4.7.0 RocketMQ Topic创建机制分为两种:一种自动创建,一种手动创建.可以通过设置broker的配置文件来禁用或者允许自动创建.默认是开启的允许自动创建 autoCreateTopicEnable=true/false 下面会结合源码来深度分析一下自动创建和手动创建的过程. 2. 自动T

  • vscode调试gstreamer源码的详细流程

    目录 1. 安装vscode插件 2. 配置文件修改 2.1 自定义c_cpp_properties.json 2.2 自定义tasks.json文件 2.3 Debug 3. Makefile环境下 4. Python调试 5. 调试gstreamer源码 下载gstreamer源码 编译源码 修改Makefile 输入断点 总结 1. 安装vscode插件 C/C++ C/C++ Extension 2. 配置文件修改 vscode中每个项目都有一套配置文件集合,位于.vscode目录下,其

  • js调试系列 源码定位与调试[基础篇]

    我们先来处理第一个问题:1. 查看文章下方 推荐 这个功能所调用的函数源码 其实非常简单,点放大镜选中那个推荐即可. 这个  votePost(cb_entryId,'Digg')  就是推荐按钮所调用的函数了,是不是非常简单. 第二个问题,定位到函数所在文件位置. 其实也是非常简单的,当然,不熟悉控制台的朋友也许不知道怎么看. 我在控制台输入 votePost 然后回车, 函数源码粗显啦,并且在右下角有个链接 blog-common.js?v=WE8o1xrgcTu07QVvwYqERqD7A

  • 使用VScode 插件debugger for chrome 调试react源码的方法

    代码调试,是我们前端日常工作中不可或缺的能力了吧! 在面向dom开发的时代,我们开发时直接在chrome里打断点是很方便的. 但是,当我们面向组件开发时(react),浏览器拿到的是我们编译过后的代码,还想在浏览器里打断点几乎是不可能的了. 场景 那怎么办,方法总是比困难多!愚蠢的我想到了console/debugger!!一直在使用,虽然很不方便(打印太多实在太乱!上线还要配置删除掉),但是我竟然使用了很久(这真是一个糟糕的编码习惯吧).直到今天,我想研究一下react源码,需要断点的地方有很

  • Android 源码如何编译调试

    android提供的工具链和开发工具比较完善,因此它的开发环境的搭建比较简单,相信许多朋友都已经搭建好环境,并编写了HelloActivity入门程序了.这里先看几个问题: 1.android的文件系统结构是怎样的,我们安装的程序放在那里? 编译android源码之后,在out/target/product/generic一些文件: ramdisk.img.system.img.userdata.img. system. data.root 其中, system.img是由 system打包压缩

  • Go语言编译原理之源码调试

    目录 前言 Goland的debug调试Go源码 dlv工具调试Go源码 安装 常用命令 dlv调试抽象语法树构建 前言 在前边几篇文章中分享了Go编译过程中的源码实现,本文主要是想分享一下我是怎么调试Go的源代码的(如果你很熟悉的话,可以跳过本文).本文主要是分享两种Go源码的调试方法 Goland的debug dlv工具 本文我还会以抽象语法树为例,来通过dlv对它的构建过程进行调试 Goland的debug调试Go源码 下边以调试Go编译的入口文件为例 编辑debug配置 填写配置信息 打

  • React 源码调试方式

    目录 正文 断点调试 搜索定位 Chrome Devtools 调试 sourcemap npm 下载react包 插件注释 调试 React 最初源码 关联 react 源码项目 总结 正文 什么?调试 React 源码还有优雅和不优雅之分? 别着急,我们先来听个故事: 东东是一名前端工程师,主要用 React 技术栈,用了多年之后想深入一下,所以最近开始看 React 源码. 断点调试 他把 react 和 react-dom 包下载了下来,在项目里引入,开发服务跑起来后,打开 Chrome

随机推荐