指令 :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”加上引號也仍然不成功。