在前面第一篇中已经将源代码下载到本地了,本篇主要是介绍代码中相关模块到作用。036.Rocket-MQ-Source-code-cover.png

一、源码结构

RocketMQ源码组织方式基于Maven按照模块组织,如下图所示:

RocketMQ-SouceCode-package

二、包说明

RocketMQ 核心目录说明如下:

  • [1].broker: broker模块(broker启动进程)
  • [2].client: 消息客户端,包含消息生产者、消息消费者相关类
  • [3].common: 公共包
  • [4].dev: 开发者信息(非源代码)
  • [5].distribution: 部署实例文件夹(非源代码)
  • [6].example: RocketMQ 示例代码
  • [7].filter: 消息过滤相关基础类
  • [8].filtersrv: 消息过滤服务器实现相关类(Filter启动进程)
  • [9].logappender: 日志实现相关类
  • [10].namesrv: NameServer实现相关类(NameServer启动进程)
  • [11].openmessaging: 消息开放标准,正在制定中
  • [12].remoting: 远程通信模块,基于Netty.
  • [13].srvutil: 服务器工具类
  • [14].store: 消息存储实现相关类
  • [15].style: checkstyle相关实现
  • [16].test: 测试相关类
  • [17].tools: 工具类,监控命令相关实现类

三、IDEA 调试代码

3.1 启动NameServer

  • step1: 展开namesrv模块,选择NameSrvStartup的main函数进行启动,如下图所示

NameSrvStartup

出现如下错误提示: Please Set ROCKETMQ_HOME..., 如下图所示

Error--没有设置RocketHome环境变量

  • step2: 设置环境变量ROCKETMQ_HOME,如下图所示:

环境配置:EnvSet-01

环境配置:EnvSet-02

环境配置:EnvSet-03

环境配置:EnvSet-04

  • step3: 在RocketMQ运行主目录下创建conf、logs、cus_store三个文件夹,如下图所示

创建文件夹

  • step4: 从RocketMQ distribution 部署目录中的conf下将broker.conf, logback_broker.mxl, logback_namesrv.xml文件复制到conf目录下,同时修改broker.conf内容:
brokerClusterName = DefaultClusterbrokerName = broker-abrokerId = 0#nameServer地址,分号分割namesrvAddr=127.0.0.1:9876deleteWhen = 04fileReservedTime = 48brokerRole = ASYNC_MASTERflushDiskType = ASYNC_FLUSH#存储路径storePathRootDir=/Users/rain/Documents/IdealWorkspace/rocketmq430/cus_store#commitLog 存储路径storePathCommitLog=/Users/rain/Documents/IdealWorkspace/rocketmq430/cus_store/commitLog# 消费队列存储路径storePathConsumeQueue=/Users/rain/Documents/IdealWorkspace/rocketmq430/cus_store/consumequeue# 消息索引存储路径storePathIndex=/Users/rain/Documents/IdealWorkspace/rocketmq430/cus_store/index# checkpoint 文件存储路径storeCheckPoint=/Users/rain/Documents/IdealWorkspace/rocketmq430/cus_store/checkpoint# abort 文件存储路径abortFile=/Users/rain/Documents/IdealWorkspace/rocketmq430/cus_store/abort

具体的配置截图,如下图所示:

Modified-broker_conf

  • step5: 启动NameSrvStartup,

启动失败(由于文件复制位置错误导致的),如下图所示:

Start_up_error

启动成功,如下图所示:

Start_up_success

3.2 启动Broker

  • step1: 展开broker模块,找到启动类BrokerStartup,并启动,如下图所示:

Broker-Startup_error

  • step2: 配置环境变量,如下图所示:

Broker_Start_EnvSet

  • step3: 启动Broker,如下图所示:

Broker_start_success

3.3 测试案例

  • 3.1 step1: 展开example模块,找到quickstart包,指定生产者和消费者的NamesrvAddr,如下图所示:

Modified-quick-start-example

  • 3.2 step2: 通过后台管理控制台查看集群中的Topic,Cluster,Consumer,Producer信息,
  • 集群Cluster查询,如下图所示

RocketMQ-Cluster-Query

  • 主题查询,如下图所示

RocketMQ-Topic-Query

  • 消息查询,如下图所示

RocketMQ-Message-Query

  • 消息消费详情,如下图所示

RocketMQ-Consumer-Detail

  • 消费者组查询,如下图所示

RocketMQ-Consumergroups

结束语

本篇主要是源代码包结构分析,并且本地将RocketMQ的相关组件在本地启动并配合Console来进行消息的管理。相信通过本篇的学习,小伙伴们都能够在本地将RocketMQ源码运行的环境给跑起来了。

欢迎关注 @IT码农职场圈 ,你的认可将会是我持续的动力,希望和大家一起迈向架构师的彼岸,共同成长!

mq消费者组_「架构师MQ进阶」RocketMQ源码分析(四)- 源代码包结构分析相关推荐

  1. 【我的架构师之路】- golang源码分析之协程调度器底层实现( G、M、P)

    本人的源码是基于go 1.9.7 版本的哦! 紧接着之前写的 [我的区块链之路]- golang源码分析之select的底层实现 和 [我的区块链之路]- golang源码分析之channel的底层实 ...

  2. 字节跳动Android三面视频解析:framework+MVP架构+HashMap原理+性能优化+Flutter+源码分析等

    前言 对于字节跳动的二面三面而言,Framework+MVP架构+HashMap原理+性能优化+Flutter+源码分析等问题都成高频问点!然而很多的朋友在面试时却答不上或者答不全!今天在这分享下这些 ...

  3. 阿里架构师手写Tomcat——Session源码解析

    在 web 开发中,我们经常会用到 Session 来保存会话信息,包括用户信息.权限信息,等等.在这篇文章中,我们将分析 tomcat 容器是如何创建 session.销毁 session,又是如何 ...

  4. Rocketmq源码分析(一)整体架构

    1 系列 整体架构图 producer端发送消息 broker端接收消息 broker端消息的存储 consumer消费消息 分布式事务的实现 定时消息的实现 关于顺序消费 关于重复消息 关于高可用 ...

  5. docker ip地址_理解 Docker 网络(番外) -- 《Docker 源码分析》勘误

    前言 本来打算这篇文章是分析 Docker Overlay 网络是如何建立以及如何手动实现 Docker 的跨主机通信的.但是在完成了上一篇文章之后,打算找一些文章或者书籍印证我的文章是否正确.这时看 ...

  6. tomcat源码分析_百战卓越108天tomcat和servlet源码分析

    训练大纲(第105天) 大家如果想快速有效的学习,思想核心是"以建立知识体系为核心",具体方法是"守破离".确保老师课堂上做的操作,反复练习直到熟练. 第209 ...

  7. libevent c++高并发网络编程_【多线程高并发编程】Callable源码分析

    程序猿学社的GitHub,欢迎Starhttps://github.com/ITfqyd/cxyxs 本文已记录到github,形成对应专题. 前言 通过上一章实现多线程有几种方式,我们已经了解多线程 ...

  8. RabbitMQ自动扩展消费者源码分析

    1 前言 在 RabbitMQ异常监控及动态控制队列消费的解决方案 中,提供了一种在线动态修改消费者数量的方法,但使用该方法需要及时的监控队列消息的堆积情况,不能做到自动扩展(增加或减少)消费者数量, ...

  9. java互联网架构师入门进阶之路

    作为一个工作了将近7-8年的后端工程师,深知后端知识领域的范围之广,深度之深,而经过了几年的打磨之后,我们仍然只是那浩瀚知识海洋中非常渺小,微不足道的一粒尘埃.总之一句支撑我们砥砺前行:路漫漫其修远兮 ...

最新文章

  1. 简单的Java秒表计时器(线程),Java计时器使功能每分钟运行
  2. php - 冒泡排序
  3. LeetCode 2181. 合并零之间的节点(链表)
  4. 三天花三万!跟董事长女儿相亲却被骗财?世纪佳缘致歉杭州小吴并承诺赔偿...
  5. C++dll导出类的方式__declspec(dllexport)
  6. 小学题的python实现
  7. # 研究杂感 × VOSviewer(第二辑)
  8. 正则表达式验证手机号,正则表达式验证邮箱号,正则表达式验证QQ号,正则表达式验证微信号等
  9. SQLMAP注入拖库过程 1
  10. html中加pyecharts,如何在PPT中插入Pyecharts的图表?
  11. 统计学---一元线性回归
  12. Vmware安装深度Deepin图文
  13. Electron安装报错解决办法
  14. java小数的数据类型_【填空题】Java 中小数默认的数据类型为 ,如果要指定为 类型,要在小数后面加F或f。...
  15. $().each和$.each()
  16. RFID到底是什么技术
  17. 经典电影配乐推荐【转载】
  18. 【二维码营销案例】圣诞促销活动如何设计二维码能拉新留存促活转化?
  19. BZOJ2277: [Poi2011]Strongbox
  20. c语言书本答案揭安全,c语言书本练习答案.docx

热门文章

  1. SkyEye在航电系统冗余设计中的应用前景
  2. FPGA中除法是怎么实现的?
  3. uniapp监听视频播放进度,完成视频试看操作
  4. oauth2使用授权码模式(authorization code)获取access_token
  5. Scratch软件编程等级考试三级——20200620
  6. depth-of-focus,DOF概念
  7. 我的世界服务器给个人修改前缀,我的世界怎么给名字添加前后缀_给玩家添加名字前后缀方法介绍_3DM网游...
  8. 最优装载c语言贪心算法,最优装载(贪心算法)
  9. 心理学的166个现象---之四
  10. 厉害!北大软件2项科技成果荣获专利授权