mirror of
https://gitee.com/mirrors/Spring-Cloud-Alibaba.git
synced 2021-06-26 13:25:11 +08:00
Merge pull request #4 from spring-cloud-incubator/master
Synchronize code once
This commit is contained in:
@@ -16,10 +16,11 @@
|
||||
|
||||
package org.springframework.cloud.alibaba.nacos;
|
||||
|
||||
import org.springframework.boot.ApplicationRunner;
|
||||
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
|
||||
import org.springframework.boot.autoconfigure.AutoConfigureBefore;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnNotWebApplication;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
||||
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
||||
import org.springframework.cloud.alibaba.nacos.registry.NacosAutoServiceRegistration;
|
||||
@@ -34,21 +35,20 @@ import org.springframework.context.annotation.Configuration;
|
||||
|
||||
/**
|
||||
* @author xiaojing
|
||||
* @author <a href="mailto:mercyblitz@gmail.com">Mercy</a>
|
||||
*/
|
||||
|
||||
@Configuration
|
||||
@EnableConfigurationProperties
|
||||
@ConditionalOnNacosDiscoveryEnabled
|
||||
@ConditionalOnClass(name = "org.springframework.boot.web.servlet.context.ServletWebServerInitializedEvent")
|
||||
@ConditionalOnProperty(value = "spring.cloud.service-registry.auto-registration.enabled", matchIfMissing = true)
|
||||
@AutoConfigureBefore({ AutoServiceRegistrationAutoConfiguration.class,
|
||||
NacosDiscoveryClientAutoConfiguration.class })
|
||||
@AutoConfigureAfter(AutoServiceRegistrationConfiguration.class)
|
||||
@AutoConfigureBefore(NacosDiscoveryClientAutoConfiguration.class)
|
||||
@AutoConfigureAfter(AutoServiceRegistrationAutoConfiguration.class)
|
||||
public class NacosDiscoveryAutoConfiguration {
|
||||
|
||||
@Bean
|
||||
public NacosServiceRegistry nacosServiceRegistry() {
|
||||
return new NacosServiceRegistry();
|
||||
public NacosServiceRegistry nacosServiceRegistry(
|
||||
NacosDiscoveryProperties nacosDiscoveryProperties) {
|
||||
return new NacosServiceRegistry(nacosDiscoveryProperties);
|
||||
}
|
||||
|
||||
@Bean
|
||||
@@ -68,4 +68,26 @@ public class NacosDiscoveryAutoConfiguration {
|
||||
return new NacosAutoServiceRegistration(registry,
|
||||
autoServiceRegistrationProperties, registration);
|
||||
}
|
||||
|
||||
@Bean
|
||||
@ConditionalOnBean(NacosAutoServiceRegistration.class) // NacosAutoServiceRegistration
|
||||
// should be present
|
||||
@ConditionalOnNotWebApplication // Not Web Application
|
||||
public ApplicationRunner applicationRunner(
|
||||
NacosAutoServiceRegistration nacosAutoServiceRegistration) {
|
||||
return args -> {
|
||||
// WebServerInitializedEvent should not be multicast in Non-Web environment.
|
||||
// Whatever, NacosAutoServiceRegistration must be checked it's running or not.
|
||||
if (!nacosAutoServiceRegistration.isRunning()) { // If it's not running, let
|
||||
// it start.
|
||||
// FIXME: Please make sure "spring.cloud.nacos.discovery.port" must be
|
||||
// configured on an available port,
|
||||
// or the startup or Nacos health check will be failed.
|
||||
nacosAutoServiceRegistration.start();
|
||||
// NacosAutoServiceRegistration will be stopped after its destroy() method
|
||||
// is invoked.
|
||||
// @PreDestroy destroy() -> stop()
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
@@ -23,7 +23,11 @@ import org.slf4j.LoggerFactory;
|
||||
import org.springframework.cloud.client.ServiceInstance;
|
||||
import org.springframework.cloud.client.discovery.DiscoveryClient;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author xiaojing
|
||||
|
@@ -39,6 +39,7 @@ import static com.alibaba.nacos.api.PropertyKeyConst.*;
|
||||
/**
|
||||
* @author dungu.zpf
|
||||
* @author xiaojing
|
||||
* @author <a href="mailto:mercyblitz@gmail.com">Mercy</a>
|
||||
*/
|
||||
|
||||
@ConfigurationProperties("spring.cloud.nacos.discovery")
|
||||
@@ -160,7 +161,7 @@ public class NacosDiscoveryProperties {
|
||||
else {
|
||||
NetworkInterface netInterface = NetworkInterface
|
||||
.getByName(networkInterface);
|
||||
if (null == networkInterface) {
|
||||
if (null == netInterface) {
|
||||
throw new IllegalArgumentException(
|
||||
"no such interface " + networkInterface);
|
||||
}
|
||||
@@ -379,14 +380,13 @@ public class NacosDiscoveryProperties {
|
||||
properties.put(CLUSTER_NAME, clusterName);
|
||||
properties.put(NAMING_LOAD_CACHE_AT_START, namingLoadCacheAtStart);
|
||||
|
||||
try {
|
||||
namingService = NacosFactory.createNamingService(properties);
|
||||
return namingService;
|
||||
}
|
||||
catch (Exception e) {
|
||||
try {
|
||||
namingService = NacosFactory.createNamingService(properties);
|
||||
} catch (Exception e) {
|
||||
LOGGER.error("create naming service error!properties={},e=,", this, e);
|
||||
return null;
|
||||
}
|
||||
return namingService;
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -20,6 +20,7 @@ import org.springframework.boot.actuate.autoconfigure.endpoint.condition.Conditi
|
||||
import org.springframework.boot.actuate.endpoint.annotation.Endpoint;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
|
||||
import org.springframework.cloud.alibaba.nacos.ConditionalOnNacosDiscoveryEnabled;
|
||||
import org.springframework.cloud.alibaba.nacos.NacosDiscoveryProperties;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
@@ -29,6 +30,7 @@ import org.springframework.context.annotation.Configuration;
|
||||
*/
|
||||
@Configuration
|
||||
@ConditionalOnClass(Endpoint.class)
|
||||
@ConditionalOnNacosDiscoveryEnabled
|
||||
public class NacosDiscoveryEndpointAutoConfiguration {
|
||||
|
||||
@Bean
|
||||
|
@@ -20,83 +20,85 @@ import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.cloud.client.serviceregistry.AbstractAutoServiceRegistration;
|
||||
import org.springframework.cloud.client.serviceregistry.AutoServiceRegistrationProperties;
|
||||
import org.springframework.cloud.client.serviceregistry.Registration;
|
||||
import org.springframework.cloud.client.serviceregistry.ServiceRegistry;
|
||||
import org.springframework.util.Assert;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
/**
|
||||
* @author xiaojing
|
||||
* @author <a href="mailto:mercyblitz@gmail.com">Mercy</a>
|
||||
*/
|
||||
public class NacosAutoServiceRegistration
|
||||
extends AbstractAutoServiceRegistration<NacosRegistration> {
|
||||
private static final Logger LOGGER = LoggerFactory
|
||||
.getLogger(NacosAutoServiceRegistration.class);
|
||||
extends AbstractAutoServiceRegistration<Registration> {
|
||||
private static final Logger LOGGER = LoggerFactory
|
||||
.getLogger(NacosAutoServiceRegistration.class);
|
||||
|
||||
private NacosRegistration registration;
|
||||
private NacosRegistration registration;
|
||||
|
||||
public NacosAutoServiceRegistration(
|
||||
ServiceRegistry<NacosRegistration> serviceRegistry,
|
||||
AutoServiceRegistrationProperties autoServiceRegistrationProperties,
|
||||
NacosRegistration registration) {
|
||||
super(serviceRegistry, autoServiceRegistrationProperties);
|
||||
this.registration = registration;
|
||||
}
|
||||
public NacosAutoServiceRegistration(
|
||||
ServiceRegistry<Registration> serviceRegistry,
|
||||
AutoServiceRegistrationProperties autoServiceRegistrationProperties,
|
||||
NacosRegistration registration) {
|
||||
super(serviceRegistry, autoServiceRegistrationProperties);
|
||||
this.registration = registration;
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public void setPort(int port) {
|
||||
getPort().set(port);
|
||||
}
|
||||
@Deprecated
|
||||
public void setPort(int port) {
|
||||
getPort().set(port);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected NacosRegistration getRegistration() {
|
||||
if (this.registration.getPort() < 0 && this.getPort().get() > 0) {
|
||||
this.registration.setPort(this.getPort().get());
|
||||
}
|
||||
Assert.isTrue(this.registration.getPort() > 0, "service.port has not been set");
|
||||
return this.registration;
|
||||
}
|
||||
@Override
|
||||
protected NacosRegistration getRegistration() {
|
||||
if (this.registration.getPort() < 0 && this.getPort().get() > 0) {
|
||||
this.registration.setPort(this.getPort().get());
|
||||
}
|
||||
Assert.isTrue(this.registration.getPort() > 0, "service.port has not been set");
|
||||
return this.registration;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected NacosRegistration getManagementRegistration() {
|
||||
return null;
|
||||
}
|
||||
@Override
|
||||
protected NacosRegistration getManagementRegistration() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void register() {
|
||||
if (!this.registration.getNacosDiscoveryProperties().isRegisterEnabled()) {
|
||||
LOGGER.debug("Registration disabled.");
|
||||
return;
|
||||
}
|
||||
if (this.registration.getPort() < 0) {
|
||||
this.registration.setPort(getPort().get());
|
||||
}
|
||||
super.register();
|
||||
}
|
||||
@Override
|
||||
protected void register() {
|
||||
if (!this.registration.getNacosDiscoveryProperties().isRegisterEnabled()) {
|
||||
LOGGER.debug("Registration disabled.");
|
||||
return;
|
||||
}
|
||||
if (this.registration.getPort() < 0) {
|
||||
this.registration.setPort(getPort().get());
|
||||
}
|
||||
super.register();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void registerManagement() {
|
||||
if (!this.registration.getNacosDiscoveryProperties().isRegisterEnabled()) {
|
||||
return;
|
||||
}
|
||||
super.registerManagement();
|
||||
@Override
|
||||
protected void registerManagement() {
|
||||
if (!this.registration.getNacosDiscoveryProperties().isRegisterEnabled()) {
|
||||
return;
|
||||
}
|
||||
super.registerManagement();
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Object getConfiguration() {
|
||||
return this.registration.getNacosDiscoveryProperties();
|
||||
}
|
||||
@Override
|
||||
protected Object getConfiguration() {
|
||||
return this.registration.getNacosDiscoveryProperties();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean isEnabled() {
|
||||
return this.registration.getNacosDiscoveryProperties().isRegisterEnabled();
|
||||
}
|
||||
@Override
|
||||
protected boolean isEnabled() {
|
||||
return this.registration.getNacosDiscoveryProperties().isRegisterEnabled();
|
||||
}
|
||||
|
||||
@Override
|
||||
@SuppressWarnings("deprecation")
|
||||
protected String getAppName() {
|
||||
String appName = registration.getNacosDiscoveryProperties().getService();
|
||||
return StringUtils.isEmpty(appName) ? super.getAppName() : appName;
|
||||
}
|
||||
@Override
|
||||
@SuppressWarnings("deprecation")
|
||||
protected String getAppName() {
|
||||
String appName = registration.getNacosDiscoveryProperties().getService();
|
||||
return StringUtils.isEmpty(appName) ? super.getAppName() : appName;
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -18,90 +18,97 @@ package org.springframework.cloud.alibaba.nacos.registry;
|
||||
|
||||
import com.alibaba.nacos.api.naming.NamingService;
|
||||
import com.alibaba.nacos.api.naming.pojo.Instance;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.cloud.alibaba.nacos.NacosDiscoveryProperties;
|
||||
import org.springframework.cloud.client.serviceregistry.Registration;
|
||||
import org.springframework.cloud.client.serviceregistry.ServiceRegistry;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
/**
|
||||
* @author xiaojing
|
||||
* @author <a href="mailto:mercyblitz@gmail.com">Mercy</a>
|
||||
*/
|
||||
public class NacosServiceRegistry implements ServiceRegistry<NacosRegistration> {
|
||||
public class NacosServiceRegistry implements ServiceRegistry<Registration> {
|
||||
|
||||
private static Logger logger = LoggerFactory.getLogger(NacosServiceRegistry.class);
|
||||
private static Logger logger = LoggerFactory.getLogger(NacosServiceRegistry.class);
|
||||
|
||||
@Override
|
||||
public void register(NacosRegistration registration) {
|
||||
private final NacosDiscoveryProperties nacosDiscoveryProperties;
|
||||
|
||||
if (!registration.isRegisterEnabled()) {
|
||||
logger.info("Nacos Registration is disabled...");
|
||||
return;
|
||||
}
|
||||
if (StringUtils.isEmpty(registration.getServiceId())) {
|
||||
logger.info("No service to register for nacos client...");
|
||||
return;
|
||||
}
|
||||
private final NamingService namingService;
|
||||
|
||||
NamingService namingService = registration.getNacosNamingService();
|
||||
String serviceId = registration.getServiceId();
|
||||
public NacosServiceRegistry(NacosDiscoveryProperties nacosDiscoveryProperties) {
|
||||
this.nacosDiscoveryProperties = nacosDiscoveryProperties;
|
||||
this.namingService = nacosDiscoveryProperties.namingServiceInstance();
|
||||
}
|
||||
|
||||
Instance instance = new Instance();
|
||||
instance.setIp(registration.getHost());
|
||||
instance.setPort(registration.getPort());
|
||||
instance.setWeight(registration.getRegisterWeight());
|
||||
instance.setClusterName(registration.getCluster());
|
||||
instance.setMetadata(registration.getMetadata());
|
||||
|
||||
try {
|
||||
namingService.registerInstance(serviceId, instance);
|
||||
logger.info("nacos registry, {} {}:{} register finished", serviceId,
|
||||
instance.getIp(), instance.getPort());
|
||||
}
|
||||
catch (Exception e) {
|
||||
logger.error("nacos registry, {} register failed...{},", serviceId,
|
||||
registration.toString(), e);
|
||||
}
|
||||
}
|
||||
@Override
|
||||
public void register(Registration registration) {
|
||||
|
||||
@Override
|
||||
public void deregister(NacosRegistration registration) {
|
||||
if (StringUtils.isEmpty(registration.getServiceId())) {
|
||||
logger.info("No service to register for nacos client...");
|
||||
return;
|
||||
}
|
||||
|
||||
logger.info("De-registering from Nacos Server now...");
|
||||
String serviceId = registration.getServiceId();
|
||||
|
||||
if (StringUtils.isEmpty(registration.getServiceId())) {
|
||||
logger.info("No dom to de-register for nacos client...");
|
||||
return;
|
||||
}
|
||||
Instance instance = new Instance();
|
||||
instance.setIp(registration.getHost());
|
||||
instance.setPort(registration.getPort());
|
||||
instance.setWeight(nacosDiscoveryProperties.getWeight());
|
||||
instance.setClusterName(nacosDiscoveryProperties.getClusterName());
|
||||
instance.setMetadata(registration.getMetadata());
|
||||
|
||||
NamingService namingService = registration.getNacosNamingService();
|
||||
String serviceId = registration.getServiceId();
|
||||
try {
|
||||
namingService.registerInstance(serviceId, instance);
|
||||
logger.info("nacos registry, {} {}:{} register finished", serviceId,
|
||||
instance.getIp(), instance.getPort());
|
||||
} catch (Exception e) {
|
||||
logger.error("nacos registry, {} register failed...{},", serviceId,
|
||||
registration.toString(), e);
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
namingService.deregisterInstance(serviceId, registration.getHost(),
|
||||
registration.getPort(), registration.getCluster());
|
||||
}
|
||||
catch (Exception e) {
|
||||
logger.error("ERR_NACOS_DEREGISTER, de-register failed...{},",
|
||||
registration.toString(), e);
|
||||
}
|
||||
@Override
|
||||
public void deregister(Registration registration) {
|
||||
|
||||
logger.info("De-registration finished.");
|
||||
}
|
||||
logger.info("De-registering from Nacos Server now...");
|
||||
|
||||
@Override
|
||||
public void close() {
|
||||
if (StringUtils.isEmpty(registration.getServiceId())) {
|
||||
logger.info("No dom to de-register for nacos client...");
|
||||
return;
|
||||
}
|
||||
|
||||
}
|
||||
NamingService namingService = nacosDiscoveryProperties.namingServiceInstance();
|
||||
String serviceId = registration.getServiceId();
|
||||
|
||||
@Override
|
||||
public void setStatus(NacosRegistration registration, String status) {
|
||||
// nacos doesn't support set status of a particular registration.
|
||||
}
|
||||
try {
|
||||
namingService.deregisterInstance(serviceId, registration.getHost(),
|
||||
registration.getPort(), nacosDiscoveryProperties.getClusterName());
|
||||
} catch (Exception e) {
|
||||
logger.error("ERR_NACOS_DEREGISTER, de-register failed...{},",
|
||||
registration.toString(), e);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> T getStatus(NacosRegistration registration) {
|
||||
// nacos doesn't support query status of a particular registration.
|
||||
return null;
|
||||
}
|
||||
logger.info("De-registration finished.");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void close() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setStatus(Registration registration, String status) {
|
||||
// nacos doesn't support set status of a particular registration.
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> T getStatus(Registration registration) {
|
||||
// nacos doesn't support query status of a particular registration.
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -16,6 +16,7 @@
|
||||
|
||||
package org.springframework.cloud.alibaba.nacos.ribbon;
|
||||
|
||||
import com.alibaba.nacos.api.naming.pojo.Instance;
|
||||
import com.netflix.client.config.IClientConfig;
|
||||
import com.netflix.loadbalancer.AbstractServerList;
|
||||
import org.springframework.cloud.alibaba.nacos.NacosDiscoveryProperties;
|
||||
@@ -23,8 +24,6 @@ import org.springframework.cloud.alibaba.nacos.NacosDiscoveryProperties;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import com.alibaba.nacos.api.naming.pojo.Instance;
|
||||
|
||||
/**
|
||||
* @author xiaojing
|
||||
* @author renhaojun
|
||||
|
@@ -1,6 +1,5 @@
|
||||
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
|
||||
org.springframework.cloud.alibaba.nacos.NacosDiscoveryAutoConfiguration,\
|
||||
org.springframework.cloud.alibaba.nacos.ribbon.RibbonNacosAutoConfiguration,\
|
||||
org.springframework.cloud.alibaba.nacos.endpoint.NacosDiscoveryEndpointAutoConfiguration
|
||||
org.springframework.cloud.client.discovery.EnableDiscoveryClient=\
|
||||
org.springframework.cloud.alibaba.nacos.NacosDiscoveryClientAutoConfiguration
|
||||
org.springframework.cloud.alibaba.nacos.endpoint.NacosDiscoveryEndpointAutoConfiguration,\
|
||||
org.springframework.cloud.alibaba.nacos.NacosDiscoveryClientAutoConfiguration
|
||||
|
Reference in New Issue
Block a user