ROCKETMQ源码分析笔记1:tools
rocketmq源码解析笔记
大家好,先安利一下自己,本人男,35岁,已婚。目前就职于小资生活(北京),职位是开发总监。 姓名DaneBrown 好了。我保证本文绝不会太监!转载时请附上以上安利信息。THXALOT。
OK,开始。 因为我没有在rocketmq团队中工作过,只好以一个使用者的角度去思考rocketmq的源码。我使用的是3.2.6版本,其他版本可能略有不同。
我先讲rocketmq-tools
rocketmq-tools
rocketmq-tools是个独立的jar包,所以应该是可以独立执行的。 com.alibaba.rocketmq.tools.admin这个包里面的MQAdminExt是个接口?但是他却是继承自client项目中的MQAdmin? 不管了,往下看。MQAdminExt是整个系统的管理接口。
DefaultMQAdminExt
看文档,这是所有运维方法的汇总,应该是用了faced模式。 看里面最重要的DefaultMQAdminExtImpl类,这个类是实际干活的苦逼。
这个苦逼的第一个方法是start()。 启动时如果是CREATE_JUST 那么会检查系统变量 rocketmq.client.name 如果这个系统变量名称是DEFAULT,代码就会生成一个PID给instancename。 然后把自己作为一个client注册到MQClientManager中去。可能是为了方便管理吧。也对tools也是一种特殊的客户端。 然后是调用client的start()?看到这里我了然了。原来tools是client的一种实例。
那不用说了shutdown()也是调用的client的shudown。 后面的自己看吧,简直就是client的花式吊打经典案例。
com.alibaba.rocketmq.tools.admin.api
没啥可说的,就是一个bean和一个枚举。拜了个拜
说说com.alibaba.rocketmq.tools.command
这个项目的启动类是MQAdminStartup
MQAdminStartup
注意!rocketmq启动的时候,会检测fastjson的版本! 注意!rocketmq启动的时候,会检测fastjson的版本! 注意!rocketmq启动的时候,会检测fastjson的版本! 重要的事情重复三遍
然后是初始化各种命令,参考initCommand 方法。 典型的command模式!done!
SubCommand
就是个接口。定义了命令的名称、描述、构造Options(这个是build模式),execute方法(典型的cmd模式) 这些subcommand中使用的,都是之前咱们提到的DefaultMQAdminExt中的方法。
总结:这个项目比较简单。 最重要的几个类: 1. DefaultMQAdminExtImpl 2. MQAdminStartup 3. SubCommand 接口 4. 各个具体SubCommand的实现(太多了,自己看吧,简直就是对mq的花式吊打)
ROCKETMQ源码分析笔记1:tools的更多相关文章
- ROCKETMQ源码分析笔记2:client
CLIENT 之前讲过tools里面有大量调用client的东西.为了从源码层面了解rocket,决定啃下client这块骨头. pom 先看pom,看看CLIENT依赖谁.看完后原来是依赖commo ...
- RocketMQ 源码学习笔记————Producer 是怎么将消息发送至 Broker 的?
目录 RocketMQ 源码学习笔记----Producer 是怎么将消息发送至 Broker 的? 前言 项目结构 rocketmq-client 模块 DefaultMQProducerTest ...
- RocketMQ 源码学习笔记 Producer 是怎么将消息发送至 Broker 的?
目录 RocketMQ 源码学习笔记 Producer 是怎么将消息发送至 Broker 的? 前言 项目结构 rocketmq-client 模块 DefaultMQProducerTest Roc ...
- zeromq源码分析笔记之线程间收发命令(2)
在zeromq源码分析笔记之架构说到了zmq的整体架构,可以看到线程间通信包括两类,一类是用于收发命令,告知对象该调用什么方法去做什么事情,命令的结构由command_t结构体确定:另一类是socke ...
- RocketMQ 源码分析 —— Message 发送与接收
1.概述 Producer 发送消息.主要是同步发送消息源码,涉及到 异步/Oneway发送消息,事务消息会跳过. Broker 接收消息.(存储消息在<RocketMQ 源码分析 —— Mes ...
- ReentrantReadWriteLock源码分析笔记
ReentrantReadWriteLock包含两把锁,一是读锁ReadLock, 此乃共享锁, 一是写锁WriteLock, 此乃排它锁. 这两把锁都是基于AQS来实现的. 下面通过源码来看看Ree ...
- RocketMQ源码分析之从官方示例窥探:RocketMQ事务消息实现基本思想
摘要: RocketMQ源码分析之从官方示例窥探RocketMQ事务消息实现基本思想. 在阅读本文前,若您对RocketMQ技术感兴趣,请加入RocketMQ技术交流群 RocketMQ4.3.0版本 ...
- ArrayList源码分析笔记
ArrayList源码分析笔记 先贴出ArrayList一些属性 public class ArrayList<E> extends AbstractList<E> imple ...
- 【RocketMQ源码分析】深入消息存储(3)
前文回顾 CommitLog篇 --[RocketMQ源码分析]深入消息存储(1) ConsumeQueue篇 --[RocketMQ源码分析]深入消息存储(2) 前面两篇已经说过了消息如何存储到Co ...
随机推荐
- js保留两位小数
js保留两位小数四舍五入: (Math.floor(until_price*100)/100).toFixed(2);//会四舍五入 保留两位小数 且不四舍五入(三种方式,请用最后一种): var ...
- HTML中head里的内容经浏览器解析后全到body里了
HTML中head里的内容经浏览器解析后全到body里了 修改完代码后,用chrome审查元素,head里的内容都到body中去了 http://bbs.csdn.net/topics/3802586 ...
- Google Supersonic列存储查询库的介绍、安装、测试
查询引擎库介绍: http://www.infoq.com/cn/news/2012/10/Google-Supersonic/ Supersonic是一个面向列存储数据库的查询引擎库,它提供了一组数 ...
- netstrem获取302后的地址,可用来截图,加载实际跨域文件
直接放代码,老外博客看来的,老外还是牛逼,这都用出来了:http://jessewarden.com/2009/03/handling-crossdomainxml-and-302-redirects ...
- Jesse Livermore的21句投机至理名言
1.优秀的投机家们总是在等待,总是有耐心,等待着市场证实他们的判断.要记住,在市场本身的表现证实你的看法之前,不要完全相信你的判断. 2.要想在投机中赚到钱,就得买卖一开始就表现出利润的 ...
- Power-BI 预警触发的设定
在现实的业务场景,当某一区域的销售额低于一定的值时,那么就要引起重视了.我们希望当发生这种情况时,通过邮件或微信通知用户进行关注.Power-BI 预警触发功能就可以实现这个功能.一.设定公共参数1. ...
- JUnit4:Test注解的两个属性:expected和timeout
JUnit4:Test文档中的解释: The Test annotation supports two optional parameters. The first, expected, declar ...
- python_编程规范
缩进 4个"空格"作为一个缩进层次,永远不要使用"制表位" 空格 运算符两边放置一个空格 命名 模块名:模块应该是不含下画线的.简短的.小写的名字. 类名: ...
- 使用MSMQ 远程队列
------------------------------------------------------------------------------------------------- -- ...
- VSS转SVN
我们都知道VSS和SVN都是源代码的版本控制软件:最近公司准备把多年使用的VSS代码全部转到SVN中进行管理,查询了一些资料,整理一下,分享给大家 基本分三大步进行,如下: 1.去掉VSS所有绑定 2 ...