mq消费者组_「架构师MQ进阶」RocketMQ源码分析(四)- 源代码包结构分析
在前面第一篇中已经将源代码下载到本地了,本篇主要是介绍代码中相关模块到作用。036.Rocket-MQ-Source-code-cover.png
一、源码结构
RocketMQ源码组织方式基于Maven按照模块组织,如下图所示:
![](http://p04.5ceimg.com/content/9556388c-6813-eb11-8da9-e4434bdf6706.png)
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函数进行启动,如下图所示
![](http://p01.5ceimg.com/content/9856388c-6813-eb11-8da9-e4434bdf6706.png)
NameSrvStartup
出现如下错误提示: Please Set ROCKETMQ_HOME..., 如下图所示
![](http://p02.5ceimg.com/content/9a56388c-6813-eb11-8da9-e4434bdf6706.png)
Error--没有设置RocketHome环境变量
- step2: 设置环境变量ROCKETMQ_HOME,如下图所示:
![](http://p01.5ceimg.com/content/9c56388c-6813-eb11-8da9-e4434bdf6706.png)
环境配置:EnvSet-01
![](http://p01.5ceimg.com/content/9f56388c-6813-eb11-8da9-e4434bdf6706.png)
环境配置:EnvSet-02
![](http://p03.5ceimg.com/content/a256388c-6813-eb11-8da9-e4434bdf6706.png)
环境配置:EnvSet-03
![](http://p03.5ceimg.com/content/a456388c-6813-eb11-8da9-e4434bdf6706.png)
环境配置:EnvSet-04
- step3: 在RocketMQ运行主目录下创建conf、logs、cus_store三个文件夹,如下图所示
![](http://p05.5ceimg.com/content/a856388c-6813-eb11-8da9-e4434bdf6706.png)
创建文件夹
- 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
具体的配置截图,如下图所示:
![](http://p01.5ceimg.com/content/aa56388c-6813-eb11-8da9-e4434bdf6706.png)
Modified-broker_conf
- step5: 启动NameSrvStartup,
启动失败(由于文件复制位置错误导致的),如下图所示:
![](http://p03.5ceimg.com/content/ac56388c-6813-eb11-8da9-e4434bdf6706.png)
Start_up_error
启动成功,如下图所示:
![](http://p01.5ceimg.com/content/ae56388c-6813-eb11-8da9-e4434bdf6706.png)
Start_up_success
3.2 启动Broker
- step1: 展开broker模块,找到启动类BrokerStartup,并启动,如下图所示:
![](http://p01.5ceimg.com/content/af56388c-6813-eb11-8da9-e4434bdf6706.png)
Broker-Startup_error
- step2: 配置环境变量,如下图所示:
![](http://p03.5ceimg.com/content/b056388c-6813-eb11-8da9-e4434bdf6706.png)
Broker_Start_EnvSet
- step3: 启动Broker,如下图所示:
![](http://p05.5ceimg.com/content/b156388c-6813-eb11-8da9-e4434bdf6706.png)
Broker_start_success
3.3 测试案例
- 3.1 step1: 展开example模块,找到quickstart包,指定生产者和消费者的NamesrvAddr,如下图所示:
![](http://p03.5ceimg.com/content/b256388c-6813-eb11-8da9-e4434bdf6706.png)
Modified-quick-start-example
- 3.2 step2: 通过后台管理控制台查看集群中的Topic,Cluster,Consumer,Producer信息,
- 集群Cluster查询,如下图所示
![](http://p03.5ceimg.com/content/b356388c-6813-eb11-8da9-e4434bdf6706.png)
RocketMQ-Cluster-Query
- 主题查询,如下图所示
![](http://p03.5ceimg.com/content/b556388c-6813-eb11-8da9-e4434bdf6706.png)
RocketMQ-Topic-Query
- 消息查询,如下图所示
![](http://p04.5ceimg.com/content/b656388c-6813-eb11-8da9-e4434bdf6706.png)
RocketMQ-Message-Query
- 消息消费详情,如下图所示
![](http://p01.5ceimg.com/content/b756388c-6813-eb11-8da9-e4434bdf6706.png)
RocketMQ-Consumer-Detail
- 消费者组查询,如下图所示
![](http://p02.5ceimg.com/content/b856388c-6813-eb11-8da9-e4434bdf6706.png)
RocketMQ-Consumergroups
结束语
本篇主要是源代码包结构分析,并且本地将RocketMQ的相关组件在本地启动并配合Console来进行消息的管理。相信通过本篇的学习,小伙伴们都能够在本地将RocketMQ源码运行的环境给跑起来了。
欢迎关注 @IT码农职场圈 ,你的认可将会是我持续的动力,希望和大家一起迈向架构师的彼岸,共同成长!
mq消费者组_「架构师MQ进阶」RocketMQ源码分析(四)- 源代码包结构分析相关推荐
- 【我的架构师之路】- golang源码分析之协程调度器底层实现( G、M、P)
本人的源码是基于go 1.9.7 版本的哦! 紧接着之前写的 [我的区块链之路]- golang源码分析之select的底层实现 和 [我的区块链之路]- golang源码分析之channel的底层实 ...
- 字节跳动Android三面视频解析:framework+MVP架构+HashMap原理+性能优化+Flutter+源码分析等
前言 对于字节跳动的二面三面而言,Framework+MVP架构+HashMap原理+性能优化+Flutter+源码分析等问题都成高频问点!然而很多的朋友在面试时却答不上或者答不全!今天在这分享下这些 ...
- 阿里架构师手写Tomcat——Session源码解析
在 web 开发中,我们经常会用到 Session 来保存会话信息,包括用户信息.权限信息,等等.在这篇文章中,我们将分析 tomcat 容器是如何创建 session.销毁 session,又是如何 ...
- Rocketmq源码分析(一)整体架构
1 系列 整体架构图 producer端发送消息 broker端接收消息 broker端消息的存储 consumer消费消息 分布式事务的实现 定时消息的实现 关于顺序消费 关于重复消息 关于高可用 ...
- docker ip地址_理解 Docker 网络(番外) -- 《Docker 源码分析》勘误
前言 本来打算这篇文章是分析 Docker Overlay 网络是如何建立以及如何手动实现 Docker 的跨主机通信的.但是在完成了上一篇文章之后,打算找一些文章或者书籍印证我的文章是否正确.这时看 ...
- tomcat源码分析_百战卓越108天tomcat和servlet源码分析
训练大纲(第105天) 大家如果想快速有效的学习,思想核心是"以建立知识体系为核心",具体方法是"守破离".确保老师课堂上做的操作,反复练习直到熟练. 第209 ...
- libevent c++高并发网络编程_【多线程高并发编程】Callable源码分析
程序猿学社的GitHub,欢迎Starhttps://github.com/ITfqyd/cxyxs 本文已记录到github,形成对应专题. 前言 通过上一章实现多线程有几种方式,我们已经了解多线程 ...
- RabbitMQ自动扩展消费者源码分析
1 前言 在 RabbitMQ异常监控及动态控制队列消费的解决方案 中,提供了一种在线动态修改消费者数量的方法,但使用该方法需要及时的监控队列消息的堆积情况,不能做到自动扩展(增加或减少)消费者数量, ...
- java互联网架构师入门进阶之路
作为一个工作了将近7-8年的后端工程师,深知后端知识领域的范围之广,深度之深,而经过了几年的打磨之后,我们仍然只是那浩瀚知识海洋中非常渺小,微不足道的一粒尘埃.总之一句支撑我们砥砺前行:路漫漫其修远兮 ...
最新文章
- 简单的Java秒表计时器(线程),Java计时器使功能每分钟运行
- php - 冒泡排序
- LeetCode 2181. 合并零之间的节点(链表)
- 三天花三万!跟董事长女儿相亲却被骗财?世纪佳缘致歉杭州小吴并承诺赔偿...
- C++dll导出类的方式__declspec(dllexport)
- 小学题的python实现
- # 研究杂感 × VOSviewer(第二辑)
- 正则表达式验证手机号,正则表达式验证邮箱号,正则表达式验证QQ号,正则表达式验证微信号等
- SQLMAP注入拖库过程 1
- html中加pyecharts,如何在PPT中插入Pyecharts的图表?
- 统计学---一元线性回归
- Vmware安装深度Deepin图文
- Electron安装报错解决办法
- java小数的数据类型_【填空题】Java 中小数默认的数据类型为 ,如果要指定为 类型,要在小数后面加F或f。...
- $().each和$.each()
- RFID到底是什么技术
- 经典电影配乐推荐【转载】
- 【二维码营销案例】圣诞促销活动如何设计二维码能拉新留存促活转化?
- BZOJ2277: [Poi2011]Strongbox
- c语言书本答案揭安全,c语言书本练习答案.docx
热门文章
- SkyEye在航电系统冗余设计中的应用前景
- FPGA中除法是怎么实现的?
- uniapp监听视频播放进度,完成视频试看操作
- oauth2使用授权码模式(authorization code)获取access_token
- Scratch软件编程等级考试三级——20200620
- depth-of-focus,DOF概念
- 我的世界服务器给个人修改前缀,我的世界怎么给名字添加前后缀_给玩家添加名字前后缀方法介绍_3DM网游...
- 最优装载c语言贪心算法,最优装载(贪心算法)
- 心理学的166个现象---之四
- 厉害!北大软件2项科技成果荣获专利授权