[2021.x] Fix nacos clusterName and extended properties (#3782)

pull/3787/head
Ken Liu 9 months ago committed by GitHub
parent 353243f99e
commit 4079d321e9
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -45,6 +45,7 @@ public class BeanAutoRefreshConfigExample {
result.put("prefix", nacosConfigInfo.getPrefix()); result.put("prefix", nacosConfigInfo.getPrefix());
result.put("group", nacosConfigInfo.getGroup()); result.put("group", nacosConfigInfo.getGroup());
result.put("namespace", nacosConfigInfo.getNamespace()); result.put("namespace", nacosConfigInfo.getNamespace());
result.put("extendKey", nacosConfigInfo.getExtendKey());
return result; return result;
} }
} }

@ -46,6 +46,8 @@ public class NacosConfigInfo {
*/ */
private String namespace; private String namespace;
private String extendKey;
public String getServerAddr() { public String getServerAddr() {
return serverAddr; return serverAddr;
} }
@ -77,4 +79,12 @@ public class NacosConfigInfo {
public void setNamespace(String namespace) { public void setNamespace(String namespace) {
this.namespace = namespace; this.namespace = namespace;
} }
public String getExtendKey() {
return extendKey;
}
public void setExtendKey(String extendKey) {
this.extendKey = extendKey;
}
} }

@ -10,6 +10,7 @@ spring:
serverAddr: 127.0.0.1:8848 serverAddr: 127.0.0.1:8848
username: 'nacos' username: 'nacos'
password: 'nacos' password: 'nacos'
extendKey: value
config: config:
import: import:
- nacos:nacos-config-example.properties?refresh=true - nacos:nacos-config-example.properties?refresh=true

@ -38,9 +38,6 @@ public class NacosConfigManager {
public NacosConfigManager(NacosConfigProperties nacosConfigProperties) { public NacosConfigManager(NacosConfigProperties nacosConfigProperties) {
this.nacosConfigProperties = nacosConfigProperties; this.nacosConfigProperties = nacosConfigProperties;
// Compatible with older code in NacosConfigProperties,It will be deleted in the
// future.
createConfigService(nacosConfigProperties);
} }
/** /**

@ -102,90 +102,50 @@ public class NacosConfigProperties {
@Autowired @Autowired
@JsonIgnore @JsonIgnore
private Environment environment; private Environment environment;
@PostConstruct
public void init() {
this.overrideFromEnv();
}
private void overrideFromEnv() {
if (environment == null) {
return;
}
if (StringUtils.isEmpty(this.getServerAddr())) {
String serverAddr = environment
.resolvePlaceholders("${spring.cloud.nacos.config.server-addr:}");
if (StringUtils.isEmpty(serverAddr)) {
serverAddr = environment.resolvePlaceholders(
"${spring.cloud.nacos.server-addr:127.0.0.1:8848}");
}
this.setServerAddr(serverAddr);
}
if (StringUtils.isEmpty(this.getUsername())) {
this.setUsername(
environment.resolvePlaceholders("${spring.cloud.nacos.username:}"));
}
if (StringUtils.isEmpty(this.getPassword())) {
this.setPassword(
environment.resolvePlaceholders("${spring.cloud.nacos.password:}"));
}
}
/** /**
* nacos config server address. * nacos config server address.
*/ */
private String serverAddr; private String serverAddr;
/** /**
* the nacos authentication username. * the nacos authentication username.
*/ */
private String username; private String username;
/** /**
* the nacos authentication password. * the nacos authentication password.
*/ */
private String password; private String password;
/** /**
* encode for nacos config content. * encode for nacos config content.
*/ */
private String encode; private String encode;
/** /**
* nacos config group, group is config data meta info. * nacos config group, group is config data meta info.
*/ */
private String group = "DEFAULT_GROUP"; private String group = "DEFAULT_GROUP";
/** /**
* nacos config dataId prefix. * nacos config dataId prefix.
*/ */
private String prefix; private String prefix;
/** /**
* the suffix of nacos config dataId, also the file extension of config content. * the suffix of nacos config dataId, also the file extension of config content.
*/ */
private String fileExtension = "properties"; private String fileExtension = "properties";
/** /**
* timeout for get config from nacos. * timeout for get config from nacos.
*/ */
private int timeout = 3000; private int timeout = 3000;
/** /**
* nacos maximum number of tolerable server reconnection errors. * nacos maximum number of tolerable server reconnection errors.
*/ */
private String maxRetry; private String maxRetry;
/** /**
* nacos get config long poll timeout. * nacos get config long poll timeout.
*/ */
private String configLongPollTimeout; private String configLongPollTimeout;
/** /**
* nacos get config failure retry time. * nacos get config failure retry time.
*/ */
private String configRetryTime; private String configRetryTime;
/** /**
* If you want to pull it yourself when the program starts to get the configuration * If you want to pull it yourself when the program starts to get the configuration
* for the first time, and the registered Listener is used for future configuration * for the first time, and the registered Listener is used for future configuration
@ -194,65 +154,82 @@ public class NacosConfigProperties {
* recommend that you use {@link ConfigService#getConfigAndSignListener} directly. * recommend that you use {@link ConfigService#getConfigAndSignListener} directly.
*/ */
private boolean enableRemoteSyncConfig = false; private boolean enableRemoteSyncConfig = false;
/** /**
* endpoint for Nacos, the domain name of a service, through which the server address * endpoint for Nacos, the domain name of a service, through which the server address
* can be dynamically obtained. * can be dynamically obtained.
*/ */
private String endpoint; private String endpoint;
/** /**
* namespace, separation configuration of different environments. * namespace, separation configuration of different environments.
*/ */
private String namespace; private String namespace;
/** /**
* access key for namespace. * access key for namespace.
*/ */
private String accessKey; private String accessKey;
/** /**
* secret key for namespace. * secret key for namespace.
*/ */
private String secretKey; private String secretKey;
/** /**
* role name for aliyun ram. * role name for aliyun ram.
*/ */
private String ramRoleName; private String ramRoleName;
/** /**
* context path for nacos config server. * context path for nacos config server.
*/ */
private String contextPath; private String contextPath;
/** /**
* nacos config cluster name. * nacos config cluster name.
*/ */
private String clusterName; private String clusterName;
/** /**
* nacos config dataId name. * nacos config dataId name.
*/ */
private String name; private String name;
/** /**
* a set of shared configurations .e.g: * a set of shared configurations .e.g:
* spring.cloud.nacos.config.shared-configs[0]=xxx . * spring.cloud.nacos.config.shared-configs[0]=xxx .
*/ */
private List<Config> sharedConfigs; private List<Config> sharedConfigs;
/** /**
* a set of extensional configurations .e.g: * a set of extensional configurations .e.g:
* spring.cloud.nacos.config.extension-configs[0]=xxx . * spring.cloud.nacos.config.extension-configs[0]=xxx .
*/ */
private List<Config> extensionConfigs; private List<Config> extensionConfigs;
/** /**
* the master switch for refresh configuration, it default opened(true). * the master switch for refresh configuration, it default opened(true).
*/ */
private boolean refreshEnabled = true; private boolean refreshEnabled = true;
@PostConstruct
public void init() {
this.overrideFromEnv();
}
private void overrideFromEnv() {
if (environment == null) {
return;
}
if (StringUtils.isEmpty(this.getServerAddr())) {
String serverAddr = environment
.resolvePlaceholders("${spring.cloud.nacos.config.server-addr:}");
if (StringUtils.isEmpty(serverAddr)) {
serverAddr = environment.resolvePlaceholders(
"${spring.cloud.nacos.server-addr:127.0.0.1:8848}");
}
this.setServerAddr(serverAddr);
}
if (StringUtils.isEmpty(this.getUsername())) {
this.setUsername(
environment.resolvePlaceholders("${spring.cloud.nacos.username:}"));
}
if (StringUtils.isEmpty(this.getPassword())) {
this.setPassword(
environment.resolvePlaceholders("${spring.cloud.nacos.password:}"));
}
}
// todo sts support // todo sts support
public String getServerAddr() { public String getServerAddr() {
@ -566,7 +543,7 @@ public class NacosConfigProperties {
*/ */
public Properties assembleConfigServiceProperties() { public Properties assembleConfigServiceProperties() {
Properties properties = new Properties(); Properties properties = new Properties();
properties.put(SERVER_ADDR, Objects.toString(this.serverAddr, DEFAULT_ADDRESS)); properties.put(SERVER_ADDR, Objects.toString(this.serverAddr, ""));
properties.put(USERNAME, Objects.toString(this.username, "")); properties.put(USERNAME, Objects.toString(this.username, ""));
properties.put(PASSWORD, Objects.toString(this.password, "")); properties.put(PASSWORD, Objects.toString(this.password, ""));
properties.put(ENCODE, Objects.toString(this.encode, "")); properties.put(ENCODE, Objects.toString(this.encode, ""));
@ -592,6 +569,12 @@ public class NacosConfigProperties {
} }
enrichNacosConfigProperties(properties); enrichNacosConfigProperties(properties);
// set default value when serverAddr and endpoint is empty
if (StringUtils.isEmpty(this.serverAddr) && StringUtils.isEmpty(this.endpoint)) {
properties.put(SERVER_ADDR, DEFAULT_ADDRESS);
}
return properties; return properties;
} }

@ -54,14 +54,12 @@ public class NacosContextRefresher
.getLogger(NacosContextRefresher.class); .getLogger(NacosContextRefresher.class);
private static final AtomicLong REFRESH_COUNT = new AtomicLong(0); private static final AtomicLong REFRESH_COUNT = new AtomicLong(0);
private NacosConfigProperties nacosConfigProperties;
private final boolean isRefreshEnabled; private final boolean isRefreshEnabled;
private final NacosRefreshHistory nacosRefreshHistory; private final NacosRefreshHistory nacosRefreshHistory;
private NacosConfigProperties nacosConfigProperties;
private ConfigService configService;
private final ConfigService configService; private NacosConfigManager configManager;
private ApplicationContext applicationContext; private ApplicationContext applicationContext;
@ -73,10 +71,18 @@ public class NacosContextRefresher
NacosRefreshHistory refreshHistory) { NacosRefreshHistory refreshHistory) {
this.nacosConfigProperties = nacosConfigManager.getNacosConfigProperties(); this.nacosConfigProperties = nacosConfigManager.getNacosConfigProperties();
this.nacosRefreshHistory = refreshHistory; this.nacosRefreshHistory = refreshHistory;
this.configService = nacosConfigManager.getConfigService(); this.configManager = nacosConfigManager;
this.isRefreshEnabled = this.nacosConfigProperties.isRefreshEnabled(); this.isRefreshEnabled = this.nacosConfigProperties.isRefreshEnabled();
} }
public static long getRefreshCount() {
return REFRESH_COUNT.get();
}
public static void refreshCountIncrement() {
REFRESH_COUNT.incrementAndGet();
}
@Override @Override
public void onApplicationEvent(ApplicationReadyEvent event) { public void onApplicationEvent(ApplicationReadyEvent event) {
// many Spring context // many Spring context
@ -127,6 +133,10 @@ public class NacosContextRefresher
} }
}); });
try { try {
if (configService == null && configManager != null) {
configService = configManager.getConfigService();
}
configService.addListener(dataKey, groupKey, listener); configService.addListener(dataKey, groupKey, listener);
log.info("[Nacos Config] Listening config: dataId={}, group={}", dataKey, log.info("[Nacos Config] Listening config: dataId={}, group={}", dataKey,
groupKey); groupKey);
@ -159,12 +169,4 @@ public class NacosContextRefresher
return isRefreshEnabled; return isRefreshEnabled;
} }
public static long getRefreshCount() {
return REFRESH_COUNT.get();
}
public static void refreshCountIncrement() {
REFRESH_COUNT.incrementAndGet();
}
} }

@ -49,7 +49,6 @@ import org.springframework.core.env.ConfigurableEnvironment;
import org.springframework.core.env.Environment; import org.springframework.core.env.Environment;
import static com.alibaba.nacos.api.PropertyKeyConst.ACCESS_KEY; import static com.alibaba.nacos.api.PropertyKeyConst.ACCESS_KEY;
import static com.alibaba.nacos.api.PropertyKeyConst.CLUSTER_NAME;
import static com.alibaba.nacos.api.PropertyKeyConst.ENDPOINT; import static com.alibaba.nacos.api.PropertyKeyConst.ENDPOINT;
import static com.alibaba.nacos.api.PropertyKeyConst.ENDPOINT_PORT; import static com.alibaba.nacos.api.PropertyKeyConst.ENDPOINT_PORT;
import static com.alibaba.nacos.api.PropertyKeyConst.NAMESPACE; import static com.alibaba.nacos.api.PropertyKeyConst.NAMESPACE;
@ -70,14 +69,12 @@ import static com.alibaba.nacos.api.PropertyKeyConst.USERNAME;
@ConfigurationProperties("spring.cloud.nacos.discovery") @ConfigurationProperties("spring.cloud.nacos.discovery")
public class NacosDiscoveryProperties { public class NacosDiscoveryProperties {
private static final Logger log = LoggerFactory
.getLogger(NacosDiscoveryProperties.class);
/** /**
* Prefix of {@link NacosDiscoveryProperties}. * Prefix of {@link NacosDiscoveryProperties}.
*/ */
public static final String PREFIX = "spring.cloud.nacos.discovery"; public static final String PREFIX = "spring.cloud.nacos.discovery";
private static final Logger log = LoggerFactory
.getLogger(NacosDiscoveryProperties.class);
private static final Pattern PATTERN = Pattern.compile("-(\\w)"); private static final Pattern PATTERN = Pattern.compile("-(\\w)");
private static final String IPV4 = "IPv4"; private static final String IPV4 = "IPv4";
@ -134,7 +131,7 @@ public class NacosDiscoveryProperties {
/** /**
* cluster name for nacos . * cluster name for nacos .
*/ */
private String clusterName = "DEFAULT"; private String clusterName;
/** /**
* group name for nacos. * group name for nacos.
@ -692,7 +689,7 @@ public class NacosDiscoveryProperties {
properties.put(ACCESS_KEY, accessKey); properties.put(ACCESS_KEY, accessKey);
properties.put(SECRET_KEY, secretKey); properties.put(SECRET_KEY, secretKey);
properties.put(CLUSTER_NAME, clusterName); // properties.put(CLUSTER_NAME, clusterName);
properties.put(NAMING_LOAD_CACHE_AT_START, namingLoadCacheAtStart); properties.put(NAMING_LOAD_CACHE_AT_START, namingLoadCacheAtStart);
enrichNacosDiscoveryProperties(properties); enrichNacosDiscoveryProperties(properties);

Loading…
Cancel
Save