说在前面
管理请求 GET_SYSTEM_TOPIC_LIST_FROM_BROKER 获取broker中的system topic列表
源码解析
进入到这个方法org.apache.rocketmq.broker.processor.AdminBrokerProcessor#getSystemTopicListFromBroker
private RemotingCommand getSystemTopicListFromBroker(ChannelHandlerContext ctx, RemotingCommand request) throws RemotingCommandException { final RemotingCommand response = RemotingCommand.createResponseCommand(null); // 查询system topic列表=》 Set<String> topics = this.brokerController.getTopicConfigManager().getSystemTopic(); TopicList topicList = new TopicList(); topicList.setTopicList(topics); // 消息json编码=》 response.setBody(topicList.encode()); response.setCode(ResponseCode.SUCCESS); response.setRemark(null); return response; }
进入到这个方法org.apache.rocketmq.broker.topic.TopicConfigManager#getSystemTopic
public Set<String> getSystemTopic() { return this.systemTopicList; }
内存存储路径
private final Set<String> systemTopicList = new HashSet<String>();
往上返回到这个方法org.apache.rocketmq.remoting.protocol.RemotingSerializable#encode()对topic进行json编码
public byte[] encode() { final String json = this.toJson(); if (json != null) { return json.getBytes(CHARSET_UTF8); } return null; }
往上返回到这个方法org.apache.rocketmq.broker.processor.AdminBrokerProcessor#getSystemTopicListFromBroker结束
说在最后
本次解析仅代表个人观点,仅供参考。
加入技术微信群
钉钉技术群