Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Kwan的解忧杂货铺@新空间代码工作室
Rocketmq
提交
11703c3c
R
Rocketmq
项目概览
Kwan的解忧杂货铺@新空间代码工作室
/
Rocketmq
与 Fork 源项目一致
Fork自
Apache RocketMQ / Rocketmq
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
Rocketmq
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
11703c3c
编写于
3月 07, 2021
作者:
斜
斜阳
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[ISSUE #2698] TopicRouteSubCommand enhancement
上级
39bb9386
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
50 addition
and
4 deletion
+50
-4
tools/src/main/java/org/apache/rocketmq/tools/command/topic/TopicRouteSubCommand.java
...he/rocketmq/tools/command/topic/TopicRouteSubCommand.java
+50
-4
未找到文件。
tools/src/main/java/org/apache/rocketmq/tools/command/topic/TopicRouteSubCommand.java
浏览文件 @
11703c3c
...
...
@@ -19,14 +19,23 @@ package org.apache.rocketmq.tools.command.topic;
import
org.apache.commons.cli.CommandLine
;
import
org.apache.commons.cli.Option
;
import
org.apache.commons.cli.Options
;
import
org.apache.rocketmq.common.protocol.route.BrokerData
;
import
org.apache.rocketmq.common.protocol.route.QueueData
;
import
org.apache.rocketmq.common.protocol.route.TopicRouteData
;
import
org.apache.rocketmq.remoting.RPCHook
;
import
org.apache.rocketmq.tools.admin.DefaultMQAdminExt
;
import
org.apache.rocketmq.tools.command.SubCommand
;
import
org.apache.rocketmq.tools.command.SubCommandException
;
import
java.util.Comparator
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
public
class
TopicRouteSubCommand
implements
SubCommand
{
private
static
final
String
FORMAT
=
"%-45s %-32s %-50s %-10s %-11s %-5s\n"
;
@Override
public
String
commandName
()
{
return
"topicRoute"
;
...
...
@@ -43,12 +52,15 @@ public class TopicRouteSubCommand implements SubCommand {
opt
.
setRequired
(
true
);
options
.
addOption
(
opt
);
opt
=
new
Option
(
"l"
,
"list"
,
false
,
"Use list format to print data"
);
opt
.
setRequired
(
false
);
options
.
addOption
(
opt
);
return
options
;
}
@Override
public
void
execute
(
final
CommandLine
commandLine
,
final
Options
options
,
RPCHook
rpcHook
)
throws
SubCommandException
{
RPCHook
rpcHook
)
throws
SubCommandException
{
DefaultMQAdminExt
defaultMQAdminExt
=
new
DefaultMQAdminExt
(
rpcHook
);
defaultMQAdminExt
.
setInstanceName
(
Long
.
toString
(
System
.
currentTimeMillis
()));
...
...
@@ -58,12 +70,46 @@ public class TopicRouteSubCommand implements SubCommand {
String
topic
=
commandLine
.
getOptionValue
(
't'
).
trim
();
TopicRouteData
topicRouteData
=
defaultMQAdminExt
.
examineTopicRouteInfo
(
topic
);
String
json
=
topicRouteData
.
toJson
(
true
);
System
.
out
.
printf
(
"%s%n"
,
json
);
printData
(
topicRouteData
,
commandLine
.
hasOption
(
'l'
));
}
catch
(
Exception
e
)
{
throw
new
SubCommandException
(
this
.
getClass
().
getSimpleName
()
+
" command failed"
,
e
);
}
finally
{
defaultMQAdminExt
.
shutdown
();
}
}
}
private
void
printData
(
TopicRouteData
topicRouteData
,
boolean
useListFormat
)
{
if
(!
useListFormat
)
{
System
.
out
.
printf
(
"%s%n"
,
topicRouteData
.
toJson
(
true
));
return
;
}
int
totalReadQueue
=
0
,
totalWriteQueue
=
0
;
List
<
QueueData
>
queueDataList
=
topicRouteData
.
getQueueDatas
();
Map
<
String
/*brokerName*/
,
QueueData
>
map
=
new
HashMap
<>();
for
(
QueueData
queueData
:
queueDataList
)
{
map
.
put
(
queueData
.
getBrokerName
(),
queueData
);
}
queueDataList
.
sort
(
Comparator
.
comparing
(
QueueData:
:
getBrokerName
));
List
<
BrokerData
>
brokerDataList
=
topicRouteData
.
getBrokerDatas
();
brokerDataList
.
sort
(
Comparator
.
comparing
(
BrokerData:
:
getBrokerName
));
System
.
out
.
printf
(
FORMAT
,
"#ClusterName"
,
"#BrokerName"
,
"#BrokerAddrs"
,
"#ReadQueue"
,
"#WriteQueue"
,
"#Perm"
);
for
(
BrokerData
brokerData
:
brokerDataList
)
{
String
brokerName
=
brokerData
.
getBrokerName
();
QueueData
queueData
=
map
.
get
(
brokerName
);
totalReadQueue
+=
queueData
.
getReadQueueNums
();
totalWriteQueue
+=
queueData
.
getWriteQueueNums
();
System
.
out
.
printf
(
FORMAT
,
brokerData
.
getCluster
(),
brokerName
,
brokerData
.
getBrokerAddrs
(),
queueData
.
getReadQueueNums
(),
queueData
.
getWriteQueueNums
(),
queueData
.
getPerm
());
}
for
(
int
i
=
0
;
i
<
158
;
i
++)
{
System
.
out
.
print
(
"-"
);
}
System
.
out
.
print
(
"\n"
);
System
.
out
.
printf
(
FORMAT
,
"Total:"
,
map
.
keySet
().
size
(),
""
,
totalReadQueue
,
totalWriteQueue
,
""
);
}
}
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录