RocketMQ-tools分为3部分
admin
command
monitor
下面一一介绍
提供了管理操作接口
command提供了命令行控制MQ的一些方法。
进入RocketMQ安装目录,执行sh bin/mqadmin
有几个参数的执行方法
打印命令提示,如下:
打印某个命令的提示参数,比如sh bin/mqadmin helop updatetopic(不需要区分大小写)
比如 sh bin/mqadmin updatetopic -x xxx
首先来看bin/mqadmin这个启动脚本
前面在设置ROCKETMQ_HOME环境变量,然后启动MQAdminStartup这个类。
逻辑很简单,
首先初始化可以支持的Command - initCommand
initLogback根据logback_tools.xml初始化,主要是日志系统。
然后根据传入过来的参数,选择不同的执行分支,也就是上面举例的参数。
以updatetopic为例
进入UpdateTopicSubCommand.execute(xx)方法
execute的逻辑就是获取传入的参数,-t是必须的,然后还必须带上-b或者-c才会执行。
如果没有执行,那么会打印updatetopic的参数列表。
-b代表某个broker, -c代表集群
所以大概格式是: sh ./bin/mqadmin updatetopic -t topictest -b xxx
其他参数是可选的。
如果确定要更新topic,那么就会调用RocketMQ-cli里面的接口进行更新。
更新成功会打印更新成功输出,否则会报异常。
附上所有命令的操作参数
<a href="https://www.cnblogs.com/zyguo/p/4962425.html">https://www.cnblogs.com/zyguo/p/4962425.html</a>
监控相关
启动类是参数是startMonitoring
sh bin/mqadmin startMonitoring
代码如下:
-n表示要显示连接到的namesrv
-c
如果commandLine包含n参数,也就是如果输入命令有带-n的参数,比如sh bin/mqadmin topiclist -n localhost:9876。那么把它带的参数值拿出来,然后设置到SystemProperty里面。
这样做是为了其他地方可以拿这个参数,也就是RocketMQ传递namesrv address的时候,不是用普通的参数传递,而是用系统属性。
这样做有好处也有不好的地方吧,好处就是省心,一个地址设置了,很多地方都有可以得到这个值。不需要每个参数传来传去。不好的地方就是如果设置的地方多了,就容易混淆,互相影响。
然后执行command的execute方法, 也就是TopicListSubCommand.execute方法。
所有的command都实现了SubCommand接口。
SubCommand提供了几个接口方法
这个类主要就是根据传入的参数是否有-c 或者-n 获取相应的topic,然后打印出来。
以-n为例,它的逻辑就是去namesrv获取所有的topic,然后打印出来。
本文转自rongwei84n 51CTO博客,原文链接:http://blog.51cto.com/483181/2043859,如需转载请自行联系原作者