RocketMQ源码环境搭建
Posted 一条coding
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RocketMQ源码环境搭建相关的知识,希望对你有一定的参考价值。
哈喽,大家好,我是一条。
相信很多小伙伴都有阅读源码的需求,但是很多开源项目的源码环境搭建起来并不是很容易,所以我会陆续讲一些中间件的源码环境搭建,来帮助大家走好源码阅读的第一步。
首先大家需要明确一个点,阅读源码最好以debug的方式进行,通过栈调用信息可以很容易的弄懂整个流程,这也是我们想要把源码在本地跑起来的原因。
今天我们就来看一下RocketMQ的源码环境搭建。
下载源码
我们可以从github拉取代码,也可以去官网下载。
导入idea,等待maven构建即可。这个时间可能会比较长,视网速而定。
目前最新稳定版是4.9.4,本文用的以前下载的4.3.0版本。
目录结构
配置项目之前,我们先简单了解一下各个主要模块的作用,知其全貌。
- broker:这里就是启动broker相关代码。
- client:顾名思义,客户端代码,包括producer和consumer。
- common:这里也好理解,一些公共的代码。
- distribution:和部署相关的配置信息,比如broker.conf。
- example:这里是RocketMQ为我们写好的一些案例,可以快速上手体验。
- filter:过滤器功能相关。
- logging和logappender:日志相关。
- namesrv:那这个就是NameServer的代码了。
- remoting:远程通信相关,netty相关。
- srvutil:工具类无疑了。
- store:存储相关源码,很重要。
启动NameServer
- 配置环境变量 ROCKETMQ_HOME ,创建 namesrv 的运行目录 D:\\libetter\\advance\\rocketmq-namesrv-run 在idea配置好。
- 在运行目录创建conf、logs、store三个文件夹。
- 把RocketMQ源码目录中的distrbution目录下的broker.conf、logback_namesvr.xml、logback_namesrv.xml三个配置文件拷贝到刚才新建的conf目录中去。
- 修改logback_namesvr.xml这个文件,把$user.home全部替换为你的rocketmq运行目录就可以了。
- 修改broker.conf文件,
brokerClusterName = DefaultCluster
brokerName = broker-a
brokerId = 0
deleteWhen = 04
fileReservedTime = 48
brokerRole = ASYNC_MASTER
flushDiskType = ASYNC_FLUSH
autoCreateTopicEnable = true
namesrvAddr=127.0.0.1:9876
storePathRootDir=D:\\libetter\\advance\\rocketmq-namesrv-run\\store
storePathCommitLog=D:\\libetter\\advance\\rocketmq-namesrv-run\\store\\commitlog
storePathConsumeQueue=D:\\libetter\\advance\\rocketmq-namesrv-run\\store\\consumequeue
storePathIndex=D:\\libetter\\advance\\rocketmq-namesrv-run\\store\\index
storeCheckpoint=D:\\libetter\\advance\\rocketmq-namesrv-run\\store\\checkpoint
abortFile=D:\\libetter\\advance\\rocketmq-namesrv-run\\abort
- 启动namesrv
启动broker
-
同样配置环境变量
-
配置programer variables
-c D:\\libetter\\advance\\rocketmq-namesrv-run\\conf\\broker.conf
启动dashbroad
下载代码:https://github.com/apache/rocketmq-dashboard
配置namesvr地址,启动
Quick Start
修改example中的quick start代码。
- 新建 topic (可以省略,因为我们开启了自动创建topic)
- 配置 namesvr 地址
- 发送一条消息
- 启动consumer
完成
如此,我们就完成了源码环境搭建,后面就可以通过打断点的方式来研究 namesrv和broker的启动流程
、事务消息、延迟消息等底层原理了。
顺手点个赞吧!
以上是关于RocketMQ源码环境搭建的主要内容,如果未能解决你的问题,请参考以下文章