使用Idea调试RocketMQ源码教程

 更新时间:2022年11月16日 09:05:28   作者:梦想实现家_Z  
这篇文章主要为大家介绍了使用Idea调试RocketMQ源码教程详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

前言

为了更好地了解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源码的资料请关注脚本之家其它相关文章!

相关文章

  • 自动运行 screen 任务详解

    自动运行 screen 任务详解

    这篇文章主要为大家介绍了自动运行 screen 任务详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-03-03
  • VScode连接远程服务器踩坑实战记录(新版离线vscode-server安装)

    VScode连接远程服务器踩坑实战记录(新版离线vscode-server安装)

    本文主要介绍了如何使用VScode连接远程服务器,并对离线安装vscode-server进行了详细的操作步骤说明,其中包括VScode扩展的安装与配置,vscode-server的离线下载,文件的解压缩和移动,以及VScode的一些更新设置,能够帮助读者更好地理解和掌握VScode连接远程服务器的方法
    2024-10-10
  • Linux下Web网站压力测试工具Webbench使用教程

    Linux下Web网站压力测试工具Webbench使用教程

    webbench最多可以模拟3万个并发连接去测试网站的负载能力,个人感觉要比Apache自带的ab压力测试工具好,安装使用也特别方便。
    2014-11-11
  • 服务器安装conda环境遇到代理PROXY问题及解决方案

    服务器安装conda环境遇到代理PROXY问题及解决方案

    这篇文章主要为大家介绍了服务器安装conda环境遇到代理PROXY问题及解决方案,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-07-07
  • 关于HTTPS端口443的技术讲解(什么是443端口)

    关于HTTPS端口443的技术讲解(什么是443端口)

    本文将重点介绍HTTPS 443端口,它是如何工作的,它保护什么,以及为什么我们需要它,需要的朋友可以参考下
    2022-10-10
  • ubuntu 服务器中文乱码问题的解决方法

    ubuntu 服务器中文乱码问题的解决方法

    这篇文章主要介绍了ubuntu 服务器中文乱码问题的解决方法,需要的朋友可以参考下
    2018-03-03
  • 基于postman实现http接口测试过程解析

    基于postman实现http接口测试过程解析

    这篇文章主要介绍了基于postman实现http接口测试过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-11-11
  • CentOs7搭建基于pptp的VPN服务器

    CentOs7搭建基于pptp的VPN服务器

    最近想远程连接一下家里的台式机电脑,由于都是局域网,又没有公网ip,所以就没法远程,上网查了一下,发现可以在云服务器上搭建一个VPN,这样两台电脑就在同一个局域网内,就可以完美解决这个问题,现在把搭建方法和遇到的问题做个总结,感兴趣的朋友一起看看吧
    2023-11-11
  • SSH证书登录方法详细教程

    SSH证书登录方法详细教程

    SSH是服务器登录工具,密码登录和密钥登录,都有各自的缺点。SSH还有第三种登录方法,那就是证书登录。很多情况下,它是更合理、更安全的登录方法,本文介绍证书登录的方法,需要的朋友可以参考下
    2022-12-12
  • 服务被挖矿程序minerd入侵的快速解决方法

    服务被挖矿程序minerd入侵的快速解决方法

    今天一早过来,运维同事发现服务器的负载有点异常,打开top一看,发现有个进程一直占用很高的cpu,这篇文章主要介绍了关于服务被挖矿程序minerd入侵解决方法,需要的朋友可以参考下
    2023-11-11

最新评论