热门标签 | 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” 。


推荐阅读
  • Java如何导入和导出Excel文件的方法和步骤详解
    本文详细介绍了在SpringBoot中使用Java导入和导出Excel文件的方法和步骤,包括添加操作Excel的依赖、自定义注解等。文章还提供了示例代码,并将代码上传至GitHub供访问。 ... [详细]
  • 本文详细介绍了在Linux虚拟化部署中进行VLAN配置的方法。首先要确认Linux系统内核是否已经支持VLAN功能,然后配置物理网卡、子网卡和虚拟VLAN网卡的关系。接着介绍了在Linux配置VLAN Trunk的步骤,包括将物理网卡添加到VLAN、检查添加的VLAN虚拟网卡信息以及重启网络服务等。最后,通过验证连通性来确认配置是否成功。 ... [详细]
  • Jmeter对RabbitMQ压力测试
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Jmeter对RabbitMQ压力测试相关的知识,希望对你有一定的参考价值。Jm ... [详细]
  • Skywalking系列博客1安装单机版 Skywalking的快速安装方法
    本文介绍了如何快速安装单机版的Skywalking,包括下载、环境需求和端口检查等步骤。同时提供了百度盘下载地址和查询端口是否被占用的命令。 ... [详细]
  • 本文介绍了C#中生成随机数的三种方法,并分析了其中存在的问题。首先介绍了使用Random类生成随机数的默认方法,但在高并发情况下可能会出现重复的情况。接着通过循环生成了一系列随机数,进一步突显了这个问题。文章指出,随机数生成在任何编程语言中都是必备的功能,但Random类生成的随机数并不可靠。最后,提出了需要寻找其他可靠的随机数生成方法的建议。 ... [详细]
  • 解决Cydia数据库错误:could not open file /var/lib/dpkg/status 的方法
    本文介绍了解决iOS系统中Cydia数据库错误的方法。通过使用苹果电脑上的Impactor工具和NewTerm软件,以及ifunbox工具和终端命令,可以解决该问题。具体步骤包括下载所需工具、连接手机到电脑、安装NewTerm、下载ifunbox并注册Dropbox账号、下载并解压lib.zip文件、将lib文件夹拖入Books文件夹中,并将lib文件夹拷贝到/var/目录下。以上方法适用于已经越狱且出现Cydia数据库错误的iPhone手机。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 利用Visual Basic开发SAP接口程序初探的方法与原理
    本文介绍了利用Visual Basic开发SAP接口程序的方法与原理,以及SAP R/3系统的特点和二次开发平台ABAP的使用。通过程序接口自动读取SAP R/3的数据表或视图,在外部进行处理和利用水晶报表等工具生成符合中国人习惯的报表样式。具体介绍了RFC调用的原理和模型,并强调本文主要不讨论SAP R/3函数的开发,而是针对使用SAP的公司的非ABAP开发人员提供了初步的接口程序开发指导。 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • 本文介绍了在mac环境下使用nginx配置nodejs代理服务器的步骤,包括安装nginx、创建目录和文件、配置代理的域名和日志记录等。 ... [详细]
  • 本文介绍了在Linux下安装和配置Kafka的方法,包括安装JDK、下载和解压Kafka、配置Kafka的参数,以及配置Kafka的日志目录、服务器IP和日志存放路径等。同时还提供了单机配置部署的方法和zookeeper地址和端口的配置。通过实操成功的案例,帮助读者快速完成Kafka的安装和配置。 ... [详细]
  • 本文讨论了如何使用Web.Config进行自定义配置节的配置转换。作者提到,他将msbuild设置为详细模式,但转换却忽略了带有替换转换的自定义部分的存在。 ... [详细]
  • 本文介绍了如何使用JSONObiect和Gson相关方法实现json数据与kotlin对象的相互转换。首先解释了JSON的概念和数据格式,然后详细介绍了相关API,包括JSONObject和Gson的使用方法。接着讲解了如何将json格式的字符串转换为kotlin对象或List,以及如何将kotlin对象转换为json字符串。最后提到了使用Map封装json对象的特殊情况。文章还对JSON和XML进行了比较,指出了JSON的优势和缺点。 ... [详细]
  • PHP组合工具以及开发所需的工具
    本文介绍了PHP开发中常用的组合工具和开发所需的工具。对于数据分析软件,包括Excel、hihidata、SPSS、SAS、MARLAB、Eview以及各种BI与报表工具等。同时还介绍了PHP开发所需的PHP MySQL Apache集成环境,包括推荐的AppServ等版本。 ... [详细]
  • 本文总结了初学者在使用dubbo设计架构过程中遇到的问题,并提供了相应的解决方法。问题包括传输字节流限制、分布式事务、序列化、多点部署、zk端口冲突、服务失败请求3次机制以及启动时检查。通过解决这些问题,初学者能够更好地理解和应用dubbo设计架构。 ... [详细]
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社区 版权所有