[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("group", nacosConfigInfo.getGroup());
result.put("namespace", nacosConfigInfo.getNamespace());
result.put("extendKey", nacosConfigInfo.getExtendKey());
return result;
}
}

@ -46,6 +46,8 @@ public class NacosConfigInfo {
*/
private String namespace;
private String extendKey;
public String getServerAddr() {
return serverAddr;
}
@ -77,4 +79,12 @@ public class NacosConfigInfo {
public void setNamespace(String 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
username: 'nacos'
password: 'nacos'
extendKey: value
config:
import:
- nacos:nacos-config-example.properties?refresh=true

@ -38,9 +38,6 @@ public class NacosConfigManager {
public NacosConfigManager(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
@JsonIgnore
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.
*/
private String serverAddr;
/**
* the nacos authentication username.
*/
private String username;
/**
* the nacos authentication password.
*/
private String password;
/**
* encode for nacos config content.
*/
private String encode;
/**
* nacos config group, group is config data meta info.
*/
private String group = "DEFAULT_GROUP";
/**
* nacos config dataId prefix.
*/
private String prefix;
/**
* the suffix of nacos config dataId, also the file extension of config content.
*/
private String fileExtension = "properties";
/**
* timeout for get config from nacos.
*/
private int timeout = 3000;
/**
* nacos maximum number of tolerable server reconnection errors.
*/
private String maxRetry;
/**
* nacos get config long poll timeout.
*/
private String configLongPollTimeout;
/**
* nacos get config failure retry time.
*/
private String configRetryTime;
/**
* 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
@ -194,65 +154,82 @@ public class NacosConfigProperties {
* recommend that you use {@link ConfigService#getConfigAndSignListener} directly.
*/
private boolean enableRemoteSyncConfig = false;
/**
* endpoint for Nacos, the domain name of a service, through which the server address
* can be dynamically obtained.
*/
private String endpoint;
/**
* namespace, separation configuration of different environments.
*/
private String namespace;
/**
* access key for namespace.
*/
private String accessKey;
/**
* secret key for namespace.
*/
private String secretKey;
/**
* role name for aliyun ram.
*/
private String ramRoleName;
/**
* context path for nacos config server.
*/
private String contextPath;
/**
* nacos config cluster name.
*/
private String clusterName;
/**
* nacos config dataId name.
*/
private String name;
/**
* a set of shared configurations .e.g:
* spring.cloud.nacos.config.shared-configs[0]=xxx .
*/
private List<Config> sharedConfigs;
/**
* a set of extensional configurations .e.g:
* spring.cloud.nacos.config.extension-configs[0]=xxx .
*/
private List<Config> extensionConfigs;
/**
* the master switch for refresh configuration, it default opened(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
public String getServerAddr() {
@ -566,7 +543,7 @@ public class NacosConfigProperties {
*/
public Properties assembleConfigServiceProperties() {
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(PASSWORD, Objects.toString(this.password, ""));
properties.put(ENCODE, Objects.toString(this.encode, ""));
@ -592,6 +569,12 @@ public class NacosConfigProperties {
}
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;
}

@ -54,14 +54,12 @@ public class NacosContextRefresher
.getLogger(NacosContextRefresher.class);
private static final AtomicLong REFRESH_COUNT = new AtomicLong(0);
private NacosConfigProperties nacosConfigProperties;
private final boolean isRefreshEnabled;
private final NacosRefreshHistory nacosRefreshHistory;
private NacosConfigProperties nacosConfigProperties;
private ConfigService configService;
private final ConfigService configService;
private NacosConfigManager configManager;
private ApplicationContext applicationContext;
@ -73,10 +71,18 @@ public class NacosContextRefresher
NacosRefreshHistory refreshHistory) {
this.nacosConfigProperties = nacosConfigManager.getNacosConfigProperties();
this.nacosRefreshHistory = refreshHistory;
this.configService = nacosConfigManager.getConfigService();
this.configManager = nacosConfigManager;
this.isRefreshEnabled = this.nacosConfigProperties.isRefreshEnabled();
}
public static long getRefreshCount() {
return REFRESH_COUNT.get();
}
public static void refreshCountIncrement() {
REFRESH_COUNT.incrementAndGet();
}
@Override
public void onApplicationEvent(ApplicationReadyEvent event) {
// many Spring context
@ -127,6 +133,10 @@ public class NacosContextRefresher
}
});
try {
if (configService == null && configManager != null) {
configService = configManager.getConfigService();
}
configService.addListener(dataKey, groupKey, listener);
log.info("[Nacos Config] Listening config: dataId={}, group={}", dataKey,
groupKey);
@ -159,12 +169,4 @@ public class NacosContextRefresher
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 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_PORT;
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")
public class NacosDiscoveryProperties {
private static final Logger log = LoggerFactory
.getLogger(NacosDiscoveryProperties.class);
/**
* Prefix of {@link NacosDiscoveryProperties}.
*/
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 String IPV4 = "IPv4";
@ -134,7 +131,7 @@ public class NacosDiscoveryProperties {
/**
* cluster name for nacos .
*/
private String clusterName = "DEFAULT";
private String clusterName;
/**
* group name for nacos.
@ -692,7 +689,7 @@ public class NacosDiscoveryProperties {
properties.put(ACCESS_KEY, accessKey);
properties.put(SECRET_KEY, secretKey);
properties.put(CLUSTER_NAME, clusterName);
// properties.put(CLUSTER_NAME, clusterName);
properties.put(NAMING_LOAD_CACHE_AT_START, namingLoadCacheAtStart);
enrichNacosDiscoveryProperties(properties);

Loading…
Cancel
Save