|
|
|
@ -19,16 +19,13 @@ package com.alibaba.cloud.nacos;
|
|
|
|
|
import java.net.Inet4Address;
|
|
|
|
|
import java.net.InetAddress;
|
|
|
|
|
import java.net.NetworkInterface;
|
|
|
|
|
import java.util.Enumeration;
|
|
|
|
|
import java.util.HashMap;
|
|
|
|
|
import java.util.Map;
|
|
|
|
|
import java.util.Objects;
|
|
|
|
|
import java.util.Properties;
|
|
|
|
|
import java.util.*;
|
|
|
|
|
import java.util.regex.Matcher;
|
|
|
|
|
import java.util.regex.Pattern;
|
|
|
|
|
|
|
|
|
|
import javax.annotation.PostConstruct;
|
|
|
|
|
|
|
|
|
|
import com.alibaba.cloud.commons.lang.StringUtils;
|
|
|
|
|
import com.alibaba.cloud.nacos.event.NacosDiscoveryInfoChangedEvent;
|
|
|
|
|
import com.alibaba.nacos.api.naming.NamingService;
|
|
|
|
|
import com.alibaba.nacos.api.naming.PreservedMetadataKeys;
|
|
|
|
@ -44,18 +41,8 @@ import org.springframework.cloud.commons.util.InetUtils;
|
|
|
|
|
import org.springframework.context.ApplicationEventPublisher;
|
|
|
|
|
import org.springframework.core.env.ConfigurableEnvironment;
|
|
|
|
|
import org.springframework.core.env.Environment;
|
|
|
|
|
import org.springframework.util.StringUtils;
|
|
|
|
|
|
|
|
|
|
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;
|
|
|
|
|
import static com.alibaba.nacos.api.PropertyKeyConst.NAMING_LOAD_CACHE_AT_START;
|
|
|
|
|
import static com.alibaba.nacos.api.PropertyKeyConst.PASSWORD;
|
|
|
|
|
import static com.alibaba.nacos.api.PropertyKeyConst.SECRET_KEY;
|
|
|
|
|
import static com.alibaba.nacos.api.PropertyKeyConst.SERVER_ADDR;
|
|
|
|
|
import static com.alibaba.nacos.api.PropertyKeyConst.USERNAME;
|
|
|
|
|
|
|
|
|
|
import static com.alibaba.nacos.api.PropertyKeyConst.*;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @author dungu.zpf
|
|
|
|
@ -63,6 +50,7 @@ import static com.alibaba.nacos.api.PropertyKeyConst.USERNAME;
|
|
|
|
|
* @author <a href="mailto:mercyblitz@gmail.com">Mercy</a>
|
|
|
|
|
* @author <a href="mailto:lyuzb@lyuzb.com">lyuzb</a>
|
|
|
|
|
* @author <a href="mailto:78552423@qq.com">eshun</a>
|
|
|
|
|
* @author freeman
|
|
|
|
|
*/
|
|
|
|
|
@ConfigurationProperties("spring.cloud.nacos.discovery")
|
|
|
|
|
public class NacosDiscoveryProperties {
|
|
|
|
@ -207,6 +195,12 @@ public class NacosDiscoveryProperties {
|
|
|
|
|
*/
|
|
|
|
|
private boolean ephemeral = true;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Whether to enable nacos failure tolerance. If enabled, nacos will return cached
|
|
|
|
|
* values when exceptions occur.
|
|
|
|
|
*/
|
|
|
|
|
private boolean failureToleranceEnabled = true;
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
private InetUtils inetUtils;
|
|
|
|
|
|
|
|
|
@ -486,6 +480,14 @@ public class NacosDiscoveryProperties {
|
|
|
|
|
this.ephemeral = ephemeral;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public boolean isFailureToleranceEnabled() {
|
|
|
|
|
return failureToleranceEnabled;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void setFailureToleranceEnabled(boolean failureToleranceEnabled) {
|
|
|
|
|
this.failureToleranceEnabled = failureToleranceEnabled;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public boolean equals(Object o) {
|
|
|
|
|
if (this == o) {
|
|
|
|
@ -495,7 +497,12 @@ public class NacosDiscoveryProperties {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
NacosDiscoveryProperties that = (NacosDiscoveryProperties) o;
|
|
|
|
|
return Objects.equals(serverAddr, that.serverAddr)
|
|
|
|
|
return watchDelay == that.watchDelay && Float.compare(that.weight, weight) == 0
|
|
|
|
|
&& registerEnabled == that.registerEnabled && port == that.port
|
|
|
|
|
&& secure == that.secure && instanceEnabled == that.instanceEnabled
|
|
|
|
|
&& ephemeral == that.ephemeral
|
|
|
|
|
&& failureToleranceEnabled == that.failureToleranceEnabled
|
|
|
|
|
&& Objects.equals(serverAddr, that.serverAddr)
|
|
|
|
|
&& Objects.equals(username, that.username)
|
|
|
|
|
&& Objects.equals(password, that.password)
|
|
|
|
|
&& Objects.equals(endpoint, that.endpoint)
|
|
|
|
@ -503,8 +510,9 @@ public class NacosDiscoveryProperties {
|
|
|
|
|
&& Objects.equals(logName, that.logName)
|
|
|
|
|
&& Objects.equals(service, that.service)
|
|
|
|
|
&& Objects.equals(clusterName, that.clusterName)
|
|
|
|
|
&& Objects.equals(group, that.group) && Objects.equals(ip, that.ip)
|
|
|
|
|
&& Objects.equals(port, that.port)
|
|
|
|
|
&& Objects.equals(group, that.group)
|
|
|
|
|
&& Objects.equals(namingLoadCacheAtStart, that.namingLoadCacheAtStart)
|
|
|
|
|
&& Objects.equals(metadata, that.metadata) && Objects.equals(ip, that.ip)
|
|
|
|
|
&& Objects.equals(networkInterface, that.networkInterface)
|
|
|
|
|
&& Objects.equals(accessKey, that.accessKey)
|
|
|
|
|
&& Objects.equals(secretKey, that.secretKey)
|
|
|
|
@ -517,14 +525,15 @@ public class NacosDiscoveryProperties {
|
|
|
|
|
public int hashCode() {
|
|
|
|
|
return Objects.hash(serverAddr, username, password, endpoint, namespace,
|
|
|
|
|
watchDelay, logName, service, weight, clusterName, group,
|
|
|
|
|
namingLoadCacheAtStart, registerEnabled, ip, networkInterface, port,
|
|
|
|
|
secure, accessKey, secretKey, heartBeatInterval, heartBeatTimeout,
|
|
|
|
|
ipDeleteTimeout, instanceEnabled, ephemeral);
|
|
|
|
|
namingLoadCacheAtStart, metadata, registerEnabled, ip, networkInterface,
|
|
|
|
|
port, secure, accessKey, secretKey, heartBeatInterval, heartBeatTimeout,
|
|
|
|
|
ipDeleteTimeout, instanceEnabled, ephemeral, failureToleranceEnabled);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public String toString() {
|
|
|
|
|
return "NacosDiscoveryProperties{" + "serverAddr='" + serverAddr + '\''
|
|
|
|
|
+ ", username='" + username + '\'' + ", password='" + password + '\''
|
|
|
|
|
+ ", endpoint='" + endpoint + '\'' + ", namespace='" + namespace + '\''
|
|
|
|
|
+ ", watchDelay=" + watchDelay + ", logName='" + logName + '\''
|
|
|
|
|
+ ", service='" + service + '\'' + ", weight=" + weight
|
|
|
|
@ -535,7 +544,9 @@ public class NacosDiscoveryProperties {
|
|
|
|
|
+ ", port=" + port + ", secure=" + secure + ", accessKey='" + accessKey
|
|
|
|
|
+ '\'' + ", secretKey='" + secretKey + '\'' + ", heartBeatInterval="
|
|
|
|
|
+ heartBeatInterval + ", heartBeatTimeout=" + heartBeatTimeout
|
|
|
|
|
+ ", ipDeleteTimeout=" + ipDeleteTimeout + '}';
|
|
|
|
|
+ ", ipDeleteTimeout=" + ipDeleteTimeout + ", instanceEnabled="
|
|
|
|
|
+ instanceEnabled + ", ephemeral=" + ephemeral
|
|
|
|
|
+ ", failureToleranceEnabled=" + failureToleranceEnabled + '}';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void overrideFromEnv(Environment env) {
|
|
|
|
|