更新和创建订阅组AdminBrokerProcessor#updateAndCreateSubscriptionGroup
AdminBrokerProcessor#processRequest#this.updateAndCreateSubscriptionGroup(ctx, request)
private RemotingCommand updateAndCreateSubscriptionGroup(ChannelHandlerContext ctx, RemotingCommand request)
throws RemotingCommandException {
final RemotingCommand response = RemotingCommand.createResponseCommand(null);
log.info("updateAndCreateSubscriptionGroup called by {}", RemotingHelper.parseChannelRemoteAddr(ctx.channel()));
/*从请求体获取订阅组配置*/
SubscriptionGroupConfig config = RemotingSerializable.decode(request.getBody(), SubscriptionGroupConfig.class);
if (config != null) {
this.brokerController.getSubscriptionGroupManager().updateSubscriptionGroupConfig(config);
}
response.setCode(ResponseCode.SUCCESS);
response.setRemark(null);
return response;
}
SubscriptionGroupManager#updateSubscriptionGroupConfig
public void updateSubscriptionGroupConfig(final SubscriptionGroupConfig config) {
/*根据订阅组名称替换配置返回旧的订阅配置信息*/
SubscriptionGroupConfig old = this.subscriptionGroupTable.put(config.getGroupName(), config);
if (old != null) {
log.info("update subscription group config, old: {} new: {}", old, config);
} else {
log.info("create new subscription group, {}", config);
}
/*版本+1*/
this.dataVersion.nextVersion();
/*持久化配置信息*/
this.persist();
}