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 ...
随机推荐
- 点击input时,里面默认字体消失显示
点击input时,点击input里面默认字体消失显示: <input type="" name="" id="" value=&quo ...
- ssh 使用密钥与登录进行远程cp
scp -P 50000 -i abc.pem ubuntu@10.223.191.105://srv/log/webserver/main/nginx.access.2015-08-07.log ...
- 什么是ValueStack
转载自:http://www.cnblogs.com/zyw-205520/archive/2012/09/12/2681346.html Strut2的Action类通过属性可以获得所有相关的值,如 ...
- SVG知识难点
参考资料:http://www.w3cplus.com/css3/clip.html 1.clip:默认值是auto,为不裁剪 <img border="0" src ...
- matlab直方图均衡,使用向量优化
matlab自带有histeq函数对图像进行直方图均衡 自己写了一个,改成向量化形式,效率提高了一点,但是比自带的还是差很多,差不多9倍 function D = my_histeq(I) [m,n] ...
- 接入WebSocket记录
为什么用 WebSocket 因为APP里面有个聊天功能,需要服务器主动推数据到APP.HTTP 通信方式只能由客户端主动拉取,服务器不能主动推给客户端,如果有实时的消息,要立刻通知客户端就麻烦了,要 ...
- vim - buffer
1. buffer switching http://vim.wikia.com/wiki/Easier_buffer_switching :buffer:ls:files 2. vim defaul ...
- pip install 安装python-requests
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple python-requests
- XEP-0078:非SASL认证
XEP-0078:非SASL认证 抽象: 这个文件规定了使用Jabber的Jabber的服务器和服务认证的协议:智商:AUTH命名空间.注意哦:本文规定的协议,取而代之的SASL认证的被取代,如RFC ...
- boost any库
转: 原理 c++是一个强类型的语言,要实现一个万能类型可以考虑用void*来保存数据,然后用类型转换进行操作,如: class MyAny{ MyAny(void* input):content_( ...