请教下使用Apache RocketMQ中mqadmin deleteTopic 命令只能在broker主机上执行吗?发现在非broker主机执行这个命令报错Caused by: org.apache.rocketmq.client.exception.MQClientException: CODE: 1 DESC: Can't modify topic or subscription group from slave broker, please execute it from master broker?
这个应该是代码写错了。
org.apache.rocketmq.tools.admin.DefaultMQAdminExtImpl#deleteTopic
这个方法里,用的是Set brokerAddressSet = CommandUtil.fetchMasterAndSlaveAddrByClusterName(this.defaultMQAdminExt, clusterName);获取主和从节点的address,应该是获取主节点的adderss。用fetchMasterAddrByClusterName。
在Apache RocketMQ中,mqadmin deleteTopic命令只能在broker主机上执行,不支持在非broker主机上执行。如果在非broker主机上执行该命令,会出现类似于"Can't modify topic or subscription group from slave broker, please execute it from master broker" 的错误。
这是因为,该命令会请求主节点进行相应的操作,而从节点是不能进行这些操作的。主节点是唯一拥有修改topic信息的权限的,从节点只负责数据同步,并不具备修改元数据信息的能力。因此,如果需要删除topic,必须在主节点所在的broker机器上执行mqadmin deleteTopic命令。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
涵盖 RocketMQ、Kafka、RabbitMQ、MQTT、轻量消息队列(原MNS) 的消息队列产品体系,全系产品 Serverless 化。RocketMQ 一站式学习:https://rocketmq.io/