热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

45源码:在IntellijIDEA中启动NameServer、Broker以及本地调试源码

在将RocketMQ源码导入开发工具后,主要有以下几步要做:编译启动namesrv启动broker1.编

在将RocketMQ源码导入开发工具后,主要有以下几步要做:

  1. 编译
  2. 启动namesrv
  3. 启动broker

1. 编译

解压导入idea,修改配置文件pom.xml,jdk编译版本为1.8

 在IDEA的Ternimal界面执行编译:

# 编译
mvn -Prelease-all -DskipTests clean install -U

2. 启动namesrv

在org.apache.rocketmq.namesrv.NamesrvStartup#createNamesrvController的位置修改源码,增加rocketHome的配置。启动的时候就可以找到这个环境变量了。

接着要在rocketmq运行目录中创建需要的目录结构以及拷贝配置文件的操作。

具体需要在rocketmq-nameserver运行目录中创建需要的目录结构,此时需要创建conf、logs、store三个文件夹,用于后续NameServer运行时使用。

然后把RocketMQ源码目录中的distrbution目录下的broker.conf、logback_namesvr.xml两个配置文件拷贝到刚才创建的conf目录中 ,接着就是修改这两个配置文件。

首先修改logback_namesvr.xml文件,修改里面的日志的目录,修改为你的rocketmq运行目录中的logs目录。里面有很多的${user.home},要直接把这些 ${user.hom} 全部替换为你的 rocketmq运行目录就可以了。

接着就是修改broker.conf文件,改成如下所示:

brokerClusterName = DefaultCluster
brokerName = broker-a
brokerId = 0
# ??nameserver???
namesrvAddr=127.0.0.1:9876
deleteWhen = 04
fileReservedTime = 48
brokerRole = ASYNC_MASTER
flushDiskType = ASYNC_FLUSH
storePathRootDir=J:\gitee\rocketmq-master\distribution\targets\rocketmq-mq\store
storePathCommitLog=J:\gitee\rocketmq-master\distribution\targets\rocketmq-mq\store\commitLog
storePathCOnsumeQueue=J:\gitee\rocketmq-master\distribution\targets\rocketmq-mq\store\consumequeue
storePathIndex=J:\gitee\rocketmq-master\distribution\targets\rocketmq-mq\store\index
storeCheckpoint=J:\gitee\rocketmq-master\distribution\targets\rocketmq-mq/store/checkpoint
abortFile=J:\gitee\rocketmq-master\distribution\targets\rocketmq-mq/abort

启动配置如下:

  最后就是启动NameServer了,右击NamesvrStartup类,选择Debug NamesvrStartup.main()就可以用debug模式去启动NameServer了,它会自动找到ROCEKTMQ_HOME环境变量,这个目录就是你的运行目录,里面有conf、logs、store几个目录。

它会读取conf里的配置文件,所有的日志都会打印在logs目录里,然后数据都会写在 store 目录里,启动成功之后,在 Intellij IDEA 的命令行里就会看到下面的提示:

Connected to the target VM, address: '127.0.0.1:55891', transport: 'socket'
The Name Server boot success. serializeType=JSON

3.启动broker

用创建NameServer启动配置的方式再创建一个,Name中输入BrokerStartup,Main class可以选择broker模块下的BrokerStartup类,Use classpath of module中可以选择broker这个module,具体的配置如下图所示:

  由于前面已经将broker.conf文件拷贝到启动目录的 “con/”目录下并配置好了,所以这里不需要再做修改。

不过这里要将rocketmq-master源码目录下的distribution里的一个logback-broker.xml文件拷贝到运行目录的conf目录中去,然后修改里面的地址,把 ${user.home}都修改为rocketmq的运行目录。

启动Broker

接着就可以使用debug模式启动BrokerStartup类了,这里右击Debug BrokerStartup.main()就可以启动它。如果控制台出现以下的一段提示,就说明broker启动成功过了:

Connected to the target VM, address: '127.0.0.1:54101', transport: 'socket'
The broker[wushaopei, 169.254.178.74:10911] boot success. serializeType=JSON and name server is 127.0.0.1:9876

然后在rocketmq运行目录下的logs中,会找到一个子目录是rocketmqlogs,里面有一个broker.log,就可以看到Broker的启动日志了,如下所示:

2021-07-29 22:20:00 INFO main - Try to start service thread:AllocateMappedFileService started:false lastThread:null
2021-07-29 22:20:00 INFO main - load C:\Users\wushaopei\store\config\delayOffset.json OK
2021-07-29 22:20:03 INFO main - Set user specified name server address: 127.0.0.1:9876
2021-07-29 22:20:03 WARN main - Load default transaction message hook service: TransactionalMessageServiceImpl
2021-07-29 22:20:03 WARN main - Load default discard message hook service: DefaultTransactionalMessageCheckListener
2021-07-29 22:20:03 INFO main - The broker dose not enable acl
2021-07-29 22:20:03 INFO main - Try to start service thread:ReputMessageService started:false lastThread:null
2021-07-29 22:20:03 INFO main - Try to start service thread:AcceptSocketService started:false lastThread:null
2021-07-29 22:20:03 INFO main - Try to start service thread:GroupTransferService started:false lastThread:null
2021-07-29 22:20:03 INFO main - Try to start service thread:HAClient started:false lastThread:null
2021-07-29 22:20:03 INFO main - load C:\Users\wushaopei\store\config\delayOffset.json OK
2021-07-29 22:20:03 INFO main - Try to start service thread:FlushConsumeQueueService started:false lastThread:null
2021-07-29 22:20:03 INFO main - Try to start service thread:FlushRealTimeService started:false lastThread:null
2021-07-29 22:20:03 INFO main - Try to start service thread:StoreStatsService started:false lastThread:null
2021-07-29 22:20:04 INFO main - Try to start service thread:FileWatchService started:false lastThread:null
2021-07-29 22:20:04 INFO FileWatchService - FileWatchService service started
2021-07-29 22:20:04 INFO main - Try to start service thread:PullRequestHoldService started:false lastThread:null
2021-07-29 22:20:04 INFO PullRequestHoldService - PullRequestHoldService service started
2021-07-29 22:20:04 INFO main - Try to start service thread:TransactionalMessageCheckService started:false lastThread:null
2021-07-29 22:20:04 INFO brokerOutApi_thread_1 - register broker[0]to name server 127.0.0.1:9876 OK
2021-07-29 22:20:04 INFO main - The broker[wushaopei, 169.254.178.74:10911] boot success. serializeType=JSON and name server is 127.0.0.1:9876
2021-07-29 22:20:13 INFO BrokerControllerScheduledThread1 - dispatch behind commit log 0 bytes
2021-07-29 22:20:13 INFO BrokerControllerScheduledThread1 - Slave fall behind master: 0 bytes

4.记录一个问题:

RocketMQ的源码在编译的过程中,运行路径中存在“-”的话,会发生转义将后面一个路径拼接到前面,比如:“rocketmq-master/distribution”这个路径是从RocketMQ的github上download下来文件的路径,但是,在配置好启动broker后,在源码执行过程中会发生转义变成“rocketmq-masterdistribution” 。


推荐阅读
author-avatar
孤鹜1101
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有