• 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

    1. 配置环境变量 ROCKETMQ_HOME ,创建 namesrv 的运行目录 D:\libetter\advance\rocketmq-namesrv-run 在idea配置好。

    image-20220728111447114

    1. 在运行目录创建conf、logs、store三个文件夹。
    2. 把RocketMQ源码目录中的distrbution目录下的broker.conf、logback_namesvr.xml、logback_namesrv.xml三个配置文件拷贝到刚才新建的conf目录中去。
    3. 修改logback_namesvr.xml这个文件,把${user.home}全部替换为你的rocketmq运行目录就可以了。
    4. 修改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
    ​
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    1. 启动namesrv
      image-20220728113402259

    启动broker

    1. 同样配置环境变量

    2. 配置programer variables

      -c D:\libetter\advance\rocketmq-namesrv-run\conf\broker.conf

    启动dashbroad

    下载代码:https://github.com/apache/rocketmq-dashboard

    配置namesvr地址,启动

    image-20220728161430424

    Quick Start

    修改example中的quick start代码。

    在这里插入图片描述

    1. 新建 topic (可以省略,因为我们开启了自动创建topic)
    2. 配置 namesvr 地址
    3. 发送一条消息

    1. 启动consumer

    在这里插入图片描述

    完成

    如此,我们就完成了源码环境搭建,后面就可以通过打断点的方式来研究 namesrv和broker的启动流程
    、事务消息、延迟消息等底层原理了。

    顺手点个赞吧!

  • 相关阅读:
    React key究竟有什么作用?深入源码不背概念,五个问题刷新你对于key的认知
    Lingolingo
    k8s集群授权prometheus(集群外部署)
    Canvas简历编辑器-我的剪贴板里究竟有什么数据
    笔试面试相关记录(1)
    算法的时间复杂度与空间复杂度
    未来的嵌入式行业岗位发展怎么样?会不会越来越少?
    C# Expression学习笔记(一、表达式与表达式树的基本结构)
    数据分析与挖掘: 红楼梦人物关系(Python)词云图
    线代 | 【提神醒脑】自用笔记串联
  • 原文地址:https://blog.csdn.net/skylibiao/article/details/126049971