說在前面apache
繼續解析管理請求GET_BROKER_CONFIG 獲取broker配置微信
源碼解析app
進入到這個方法org.apache.rocketmq.broker.processor.AdminBrokerProcessor#getBrokerConfig 獲取broker配置ui
private RemotingCommand getBrokerConfig(ChannelHandlerContext ctx, RemotingCommand request) { final RemotingCommand response = RemotingCommand.createResponseCommand(GetBrokerConfigResponseHeader.class); final GetBrokerConfigResponseHeader responseHeader = (GetBrokerConfigResponseHeader) response.readCustomHeader(); // 從內存中獲取配置信息 String content = this.brokerController.getConfiguration().getAllConfigsFormatString(); if (content != null && content.length() > 0) { try { response.setBody(content.getBytes(MixAll.DEFAULT_CHARSET)); } catch (UnsupportedEncodingException e) { log.error("", e); response.setCode(ResponseCode.SYSTEM_ERROR); response.setRemark("UnsupportedEncodingException " + e); return response; } } responseHeader.setVersion(this.brokerController.getConfiguration().getDataVersionJson()); response.setCode(ResponseCode.SUCCESS); response.setRemark(null); return response; }
進入這個方法org.apache.rocketmq.common.Configuration#getAllConfigsInternal 從配置中獲取broker配置this
private String getAllConfigsInternal() { StringBuilder stringBuilder = new StringBuilder(); // reload from config object ? for (Object configObject : this.configObjectList) { Properties properties = MixAll.object2Properties(configObject); if (properties != null) { merge(properties, this.allConfigs); } else { log.warn("getAllConfigsInternal object2Properties is null, {}", configObject.getClass()); } } { stringBuilder.append(MixAll.properties2String(this.allConfigs)); } return stringBuilder.toString(); }
往上返回到這個方法org.apache.rocketmq.broker.processor.AdminBrokerProcessor#getBrokerConfig 解析完畢。orm
說在最後blog
本次解析僅表明我的觀點,僅供參考。內存
加入技術微信羣get
釘釘技術羣源碼