Add new configuration item.

Fixed equals and hash method.
Replaced StringUtils, Spring's isEmpty method is deprecated.
pull/2360/head
Freeman Lau 3 years ago
parent 9a4a7d6f42
commit 5850798977

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

@ -74,11 +74,5 @@
"type": "java.lang.Boolean", "type": "java.lang.Boolean",
"defaultValue": false, "defaultValue": false,
"description": "Integrate LoadBalancer or not." "description": "Integrate LoadBalancer or not."
},
{
"name": "spring.cloud.nacos.discovery.failure-tolerance-enabled",
"type": "java.lang.Boolean",
"defaultValue": true,
"description": "Whether to enable nacos failure tolerance. If enabled, nacos will return cached values when exceptions occur."
} }
]} ]}

Loading…
Cancel
Save