RocketMQ updateBrokerConfig 指令

本文介绍如何使用RocketMQ的mqadmin工具通过updateBrokerConfig命令来更新Broker配置,并区分使用-b和-c参数的不同之处。当使用-b参数时,仅更新指定Broker;而使用-c参数时,则更新指定集群的所有Master Broker。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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



RocketMQ 是一款分布式消息中间件,具备高性能、高可靠性和高扩展性。在实际使用中,命令行操作是进行调试、管理和监控的重要手段。以下是 RocketMQ 常用的命令行操作指南,涵盖启动、停止、消息发送与消费、集群管理等方面。 ### 启动 NameServer NameServer 是 RocketMQ 的命名服务,用于管理 Broker 的注册信息。启动 NameServer 的命令如下: ```bash nohup bin/mqnamesrv & ``` 该命令会在后台启动 NameServer,默认监听端口为 9876。 ### 启动 Broker 在启动 Broker 之前,需要确保 NameServer 已经启动。启动 Broker 的命令如下: ```bash export NAMESRV_ADDR=localhost:9876 nohup bin/mqbroker -n $NAMESRV_ADDR & ``` 默认情况下,Broker 会连接本地的 NameServer,并在端口 10911 上监听客户端请求。 ### 发送消息 RocketMQ 提供了一个简单的生产者示例类 `org.apache.rocketmq.example.quickstart.Producer`,可以通过以下命令运行该示例来发送消息: ```bash export NAMESRV_ADDR=localhost:9876 sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer ``` 该命令会向默认的 Topic `TopicTest` 发送 1000 条消息。可以通过修改代码中的 Topic 和消息数量来调整发送的消息内容。 ### 接收消息 RocketMQ 同样提供了一个简单的消费者示例类 `org.apache.rocketmq.example.quickstart.Consumer`,可以通过以下命令运行该示例来接收消息: ```bash export NAMESRV_ADDR=localhost:9876 sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer ``` 该命令会订阅默认的 Topic `TopicTest` 并开始消费消息。 ### 查看 Topic 列表 可以通过以下命令查看当前所有的 Topic 列表: ```bash sh bin/mqadmin topicList -n $NAMESRV_ADDR ``` ### 查看 Broker 列表 可以通过以下命令查看当前所有的 Broker 列表: ```bash sh bin/mqadmin brokerList -n $NAMESRV_ADDR ``` ### 查看队列信息 可以通过以下命令查看某个 Topic 的队列信息(包括队列所在的 Broker、队列 ID 等): ```bash sh bin/mqadmin topicRoute -n $NAMESRV_ADDR -t TopicTest ``` ### 查看消费者组信息 可以通过以下命令查看某个消费者组的详细信息,包括该组订阅的 Topic、消费进度等: ```bash sh bin/mqadmin consumerProgress -n $NAMESRV_ADDR -g group_name ``` ### 查看生产者信息 可以通过以下命令查看某个 Topic 的生产者信息: ```bash sh bin/mqadmin producerConnection -n $NAMESRV_ADDR -t TopicTest ``` ### 查看消费者连接信息 可以通过以下命令查看某个消费者组的连接信息: ```bash sh bin/mqadmin consumerConnection -n $NAMESRV_ADDR -g group_name ``` ### 停止 NameServer 和 Broker 可以通过以下命令分别停止 NameServer 和 Broker: ```bash # 停止 NameServer jps kill -9 <namesrv_pid> # 停止 Broker jps kill -9 <broker_pid> ``` 通过这些命令,可以有效地管理和操作 RocketMQ 集群,确保其正常运行并满足业务需求。[^1]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值