指令 :updateBrokerConfig
类路径:com.alibaba.rocketmq.tools.command.broker.UpdateBrokerConfigSubCommand
参数:
关于参数b和参数c区别还是不小的,想要搞清楚它们的差别,还是要看源码,源码在rocketmq-tools这个工程下面。参数为c时,会根据集群的给定的集群名称去拿到所有的参数配置,参数为b时,只取给定的broker,具体execute方法:
@Override
public void execute(CommandLine commandLine, Options options, RPCHook rpcHook) {
DefaultMQAdminExt defaultMQAdminExt = new DefaultMQAdminExt(rpcHook);
defaultMQAdminExt.setInstanceName(Long.toString(System.currentTimeMillis()));
try {
String key = commandLine.getOptionValue('k').trim();
String value = commandLine.getOptionValue('v').trim();
Properties properties = new Properties();
properties.put(key, value);
if (commandLine.hasOption('b')) {
String brokerAddr = commandLine.getOptionValue('b').trim();
defaultMQAdminExt.start();
defaultMQAdminExt.updateBrokerConfig(brokerAddr, properties);
System.out.printf("update broker config success, %s\n", brokerAddr);
return;
} else if (commandLine.hasOption('c')) {
String clusterName = commandLine.getOptionValue('c').trim();
defaultMQAdminExt.start();
Set<String> masterSet =
CommandUtil.fetchMasterAddrByClusterName(defaultMQAdminExt, clusterName);
for (String brokerAddr : masterSet) {
try {
defaultMQAdminExt.updateBrokerConfig(brokerAddr, properties);
System.out.printf("update broker config success, %s\n", brokerAddr);
} catch (Exception e) {
e.printStackTrace();
}
}
return;
}
ServerUtil.printCommandLineHelp("mqadmin " + this.commandName(), options);
} catch (Exception e) {
e.printStackTrace();
} finally {
defaultMQAdminExt.shutdown();
}
}
奇怪的是,笔者自己在测试的时候,修改messageDelayLevel始终没有成功:
sh bin/mqadmin updateBrokerConfig -b 192.168.1.xx:10911 -c DefaultCluster -k messageDelayLevel -v 1s 5s 10s 30s 1m 2m 3m 4m 5m 6m 7m 8m 9m 10m 20m 30m 45m 1h 2h 6h
提示是修改成功了,但是实际在配置文件里查看的,值为"1s",后面的一部分值始终设置不在成功,即使是把“1s 5s 10s 30s 1m 2m 3m 4m 5m 6m 7m 8m 9m 10m 20m 30m 45m 1h 2h 6h”加上引号也仍然不成功。