1
0
mirror of https://gitee.com/mirrors/Spring-Cloud-Alibaba.git synced 2021-06-26 13:25:11 +08:00

format code with maven plugins

This commit is contained in:
fangjian0423
2019-09-26 17:15:41 +08:00
parent ed6942d9df
commit 2435167e1e
529 changed files with 6304 additions and 5164 deletions

View File

@@ -1,11 +1,11 @@
/*
* Copyright (C) 2018 the original author or authors.
* Copyright 2013-2018 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
@@ -23,28 +23,34 @@ import org.springframework.context.annotation.Configuration;
import org.springframework.core.env.ConfigurableEnvironment;
import org.springframework.web.client.RestTemplate;
/**
* @author www.itmuch.com
*/
@Configuration
@EnableConfigurationProperties(SidecarProperties.class)
public class SidecarAutoConfiguration {
@Bean
@ConditionalOnMissingBean
public RestTemplate restTemplate() {
return new RestTemplate();
}
@Bean
public SidecarHealthIndicator sidecarHealthIndicator(SidecarProperties sidecarProperties, RestTemplate restTemplate) {
return new SidecarHealthIndicator(sidecarProperties, restTemplate);
}
@Bean
@ConditionalOnMissingBean
public RestTemplate restTemplate() {
return new RestTemplate();
}
@Bean
public SidecarHealthChecker sidecarHealthChecker(SidecarDiscoveryClient sidecarDiscoveryClient, SidecarHealthIndicator sidecarHealthIndicator, SidecarProperties sidecarProperties, ConfigurableEnvironment environment) {
SidecarHealthChecker cleaner = new SidecarHealthChecker(sidecarDiscoveryClient, sidecarHealthIndicator, sidecarProperties, environment);
cleaner.check();
return cleaner;
}
}
@Bean
public SidecarHealthIndicator sidecarHealthIndicator(
SidecarProperties sidecarProperties, RestTemplate restTemplate) {
return new SidecarHealthIndicator(sidecarProperties, restTemplate);
}
@Bean
public SidecarHealthChecker sidecarHealthChecker(
SidecarDiscoveryClient sidecarDiscoveryClient,
SidecarHealthIndicator sidecarHealthIndicator,
SidecarProperties sidecarProperties, ConfigurableEnvironment environment) {
SidecarHealthChecker cleaner = new SidecarHealthChecker(sidecarDiscoveryClient,
sidecarHealthIndicator, sidecarProperties, environment);
cleaner.check();
return cleaner;
}
}

View File

@@ -1,11 +1,11 @@
/*
* Copyright (C) 2018 the original author or authors.
* Copyright 2013-2018 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
@@ -20,21 +20,21 @@ package com.alibaba.cloud.sidecar;
* @author www.itmuch.com
*/
public interface SidecarDiscoveryClient {
/**
* register instance
*
* @param applicationName applicationName
* @param ip ip
* @param port port
*/
void registerInstance(String applicationName, String ip, Integer port);
/**
* deregister instance
*
* @param applicationName applicationName
* @param ip ip
* @param port port
*/
void deregisterInstance(String applicationName, String ip, Integer port);
/**
* register instance.
* @param applicationName applicationName
* @param ip ip
* @param port port
*/
void registerInstance(String applicationName, String ip, Integer port);
/**
* deregister instance.
* @param applicationName applicationName
* @param ip ip
* @param port port
*/
void deregisterInstance(String applicationName, String ip, Integer port);
}

View File

@@ -1,11 +1,11 @@
/*
* Copyright (C) 2018 the original author or authors.
* Copyright 2013-2018 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
@@ -16,53 +16,62 @@
package com.alibaba.cloud.sidecar;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.concurrent.TimeUnit;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import reactor.core.scheduler.Schedulers;
import org.springframework.boot.actuate.health.HealthIndicator;
import org.springframework.boot.actuate.health.Status;
import org.springframework.core.env.ConfigurableEnvironment;
import reactor.core.scheduler.Schedulers;
import java.util.concurrent.TimeUnit;
/**
* @author www.itmuch.com
*/
@Slf4j
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
public class SidecarHealthChecker {
private final SidecarDiscoveryClient sidecarDiscoveryClient;
private final HealthIndicator healthIndicator;
private final SidecarProperties sidecarProperties;
private final ConfigurableEnvironment environment;
public void check() {
Schedulers.single()
.schedulePeriodically(
() -> {
String ip = sidecarProperties.getIp();
Integer port = sidecarProperties.getPort();
private static final Logger log = LoggerFactory.getLogger(SidecarHealthChecker.class);
Status status = healthIndicator.health().getStatus();
String applicationName = environment.getProperty("spring.application.name");
private final SidecarDiscoveryClient sidecarDiscoveryClient;
if (status.equals(Status.UP)) {
this.sidecarDiscoveryClient.registerInstance(applicationName, ip, port);
log.debug("Health check success. register this instance. applicationName = {}, ip = {}, port = {}, status = {}",
applicationName, ip, port, status
);
} else {
log.warn("Health check failed. unregister this instance. applicationName = {}, ip = {}, port = {}, status = {}",
applicationName, ip, port, status
);
this.sidecarDiscoveryClient.deregisterInstance(applicationName, ip, port);
}
private final HealthIndicator healthIndicator;
private final SidecarProperties sidecarProperties;
private final ConfigurableEnvironment environment;
public SidecarHealthChecker(SidecarDiscoveryClient sidecarDiscoveryClient,
HealthIndicator healthIndicator, SidecarProperties sidecarProperties,
ConfigurableEnvironment environment) {
this.sidecarDiscoveryClient = sidecarDiscoveryClient;
this.healthIndicator = healthIndicator;
this.sidecarProperties = sidecarProperties;
this.environment = environment;
}
public void check() {
Schedulers.single().schedulePeriodically(() -> {
String ip = sidecarProperties.getIp();
Integer port = sidecarProperties.getPort();
Status status = healthIndicator.health().getStatus();
String applicationName = environment.getProperty("spring.application.name");
if (status.equals(Status.UP)) {
this.sidecarDiscoveryClient.registerInstance(applicationName, ip, port);
log.debug(
"Health check success. register this instance. applicationName = {}, ip = {}, port = {}, status = {}",
applicationName, ip, port, status);
}
else {
log.warn(
"Health check failed. unregister this instance. applicationName = {}, ip = {}, port = {}, status = {}",
applicationName, ip, port, status);
this.sidecarDiscoveryClient.deregisterInstance(applicationName, ip, port);
}
}, 0, 30, TimeUnit.SECONDS);
}
},
0,
30,
TimeUnit.SECONDS
);
}
}

View File

@@ -1,11 +1,11 @@
/*
* Copyright (C) 2018 the original author or authors.
* Copyright 2013-2018 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
@@ -16,8 +16,9 @@
package com.alibaba.cloud.sidecar;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import java.net.URI;
import java.util.Map;
import org.springframework.boot.actuate.health.AbstractHealthIndicator;
import org.springframework.boot.actuate.health.Health;
import org.springframework.core.ParameterizedTypeReference;
@@ -25,52 +26,56 @@ import org.springframework.http.HttpMethod;
import org.springframework.http.ResponseEntity;
import org.springframework.web.client.RestTemplate;
import java.net.URI;
import java.util.Map;
/**
* @author www.itmuch.com
*/
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
public class SidecarHealthIndicator extends AbstractHealthIndicator {
private final SidecarProperties sidecarProperties;
private final RestTemplate restTemplate;
@Override
protected void doHealthCheck(Health.Builder builder) throws Exception {
try {
URI uri = this.sidecarProperties.getHealthCheckUrl();
if (uri == null) {
builder.up();
return;
}
private final SidecarProperties sidecarProperties;
ResponseEntity<Map<String, Object>> exchange = this.restTemplate.exchange(
uri,
HttpMethod.GET,
null,
new ParameterizedTypeReference<Map<String, Object>>() {
}
);
private final RestTemplate restTemplate;
Map<String, Object> map = exchange.getBody();
public SidecarHealthIndicator(SidecarProperties sidecarProperties,
RestTemplate restTemplate) {
this.sidecarProperties = sidecarProperties;
this.restTemplate = restTemplate;
}
if (map == null) {
this.getWarning(builder);
return;
}
Object status = map.get("status");
if (status instanceof String) {
builder.status(status.toString());
} else {
this.getWarning(builder);
}
} catch (Exception e) {
builder.down().withDetail("error", e.getMessage());
}
}
@Override
protected void doHealthCheck(Health.Builder builder) throws Exception {
try {
URI uri = this.sidecarProperties.getHealthCheckUrl();
if (uri == null) {
builder.up();
return;
}
ResponseEntity<Map<String, Object>> exchange = this.restTemplate.exchange(uri,
HttpMethod.GET, null,
new ParameterizedTypeReference<Map<String, Object>>() {
});
Map<String, Object> map = exchange.getBody();
if (map == null) {
this.getWarning(builder);
return;
}
Object status = map.get("status");
if (status instanceof String) {
builder.status(status.toString());
}
else {
this.getWarning(builder);
}
}
catch (Exception e) {
builder.down().withDetail("error", e.getMessage());
}
}
private void getWarning(Health.Builder builder) {
builder.unknown().withDetail("warning", "no status field in response");
}
private void getWarning(Health.Builder builder) {
builder.unknown().withDetail("warning", "no status field in response");
}
}

View File

@@ -1,11 +1,11 @@
/*
* Copyright (C) 2018 the original author or authors.
* Copyright 2013-2018 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
@@ -16,39 +16,63 @@
package com.alibaba.cloud.sidecar;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.validation.annotation.Validated;
import java.net.URI;
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import java.net.URI;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.validation.annotation.Validated;
/**
* @author www.itmuch.com
*/
@ConfigurationProperties("sidecar")
@Data
@Validated
public class SidecarProperties {
/**
* polyglot service's ip
*/
private String ip;
/**
* polyglot service's port
*/
@NotNull
@Max(65535)
@Min(1)
private Integer port;
/**
* polyglot service's ip.
*/
private String ip;
/**
* polyglot service's port.
*/
@NotNull
@Max(65535)
@Min(1)
private Integer port;
/**
* polyglot service's health check url. this endpoint must return json and the format
* must follow spring boot actuator's health endpoint. eg. {"status": "UP"}.
*/
private URI healthCheckUrl;
public String getIp() {
return ip;
}
public void setIp(String ip) {
this.ip = ip;
}
public Integer getPort() {
return port;
}
public void setPort(Integer port) {
this.port = port;
}
public URI getHealthCheckUrl() {
return healthCheckUrl;
}
public void setHealthCheckUrl(URI healthCheckUrl) {
this.healthCheckUrl = healthCheckUrl;
}
/**
* polyglot service's health check url.
* this endpoint must return json and the format must follow spring boot actuator's health endpoint.
* eg. {"status": "UP"}
*/
private URI healthCheckUrl;
}

View File

@@ -1,11 +1,11 @@
/*
* Copyright (C) 2018 the original author or authors.
* Copyright 2013-2018 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
@@ -16,48 +16,58 @@
package com.alibaba.cloud.sidecar.consul;
import java.util.List;
import com.alibaba.cloud.sidecar.SidecarAutoConfiguration;
import com.alibaba.cloud.sidecar.SidecarDiscoveryClient;
import com.alibaba.cloud.sidecar.SidecarProperties;
import org.springframework.beans.factory.ObjectProvider;
import org.springframework.boot.autoconfigure.AutoConfigureBefore;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.cloud.client.serviceregistry.AutoServiceRegistrationProperties;
import org.springframework.cloud.consul.discovery.ConsulDiscoveryProperties;
import org.springframework.cloud.consul.discovery.HeartbeatProperties;
import org.springframework.cloud.consul.serviceregistry.*;
import org.springframework.cloud.consul.serviceregistry.ConsulAutoRegistration;
import org.springframework.cloud.consul.serviceregistry.ConsulAutoServiceRegistrationAutoConfiguration;
import org.springframework.cloud.consul.serviceregistry.ConsulManagementRegistrationCustomizer;
import org.springframework.cloud.consul.serviceregistry.ConsulRegistrationCustomizer;
import org.springframework.cloud.consul.serviceregistry.ConsulServiceRegistry;
import org.springframework.cloud.consul.serviceregistry.ConsulServiceRegistryAutoConfiguration;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.util.List;
/**
* @author www.itmuch.com
*/
@Configuration
@ConditionalOnClass(ConsulServiceRegistryAutoConfiguration.class)
@AutoConfigureBefore({ConsulAutoServiceRegistrationAutoConfiguration.class, SidecarAutoConfiguration.class})
@AutoConfigureBefore({ ConsulAutoServiceRegistrationAutoConfiguration.class,
SidecarAutoConfiguration.class })
public class SidecarConsulAutoConfiguration {
@Bean
public ConsulAutoRegistration consulRegistration(
AutoServiceRegistrationProperties autoServiceRegistrationProperties,
ConsulDiscoveryProperties properties,
ApplicationContext applicationContext,
ObjectProvider<List<ConsulRegistrationCustomizer>> registrationCustomizers,
ObjectProvider<List<ConsulManagementRegistrationCustomizer>> managementRegistrationCustomizers,
HeartbeatProperties heartbeatProperties,
SidecarProperties sidecarProperties) {
return SidecarConsulAutoRegistration.registration(autoServiceRegistrationProperties,
properties, applicationContext, registrationCustomizers.getIfAvailable(),
managementRegistrationCustomizers.getIfAvailable(), heartbeatProperties, sidecarProperties);
}
@Bean
public SidecarDiscoveryClient sidecarDiscoveryClient(
ConsulDiscoveryProperties properties,
ConsulServiceRegistry serviceRegistry,
ConsulAutoRegistration registration) {
return new SidecarConsulDiscoveryClient(properties, serviceRegistry, registration);
}
@Bean
public ConsulAutoRegistration consulRegistration(
AutoServiceRegistrationProperties autoServiceRegistrationProperties,
ConsulDiscoveryProperties properties, ApplicationContext applicationContext,
ObjectProvider<List<ConsulRegistrationCustomizer>> registrationCustomizers,
ObjectProvider<List<ConsulManagementRegistrationCustomizer>> managementRegistrationCustomizers,
HeartbeatProperties heartbeatProperties,
SidecarProperties sidecarProperties) {
return SidecarConsulAutoRegistration.registration(
autoServiceRegistrationProperties, properties, applicationContext,
registrationCustomizers.getIfAvailable(),
managementRegistrationCustomizers.getIfAvailable(), heartbeatProperties,
sidecarProperties);
}
@Bean
public SidecarDiscoveryClient sidecarDiscoveryClient(
ConsulDiscoveryProperties properties, ConsulServiceRegistry serviceRegistry,
ConsulAutoRegistration registration) {
return new SidecarConsulDiscoveryClient(properties, serviceRegistry,
registration);
}
}

View File

@@ -1,11 +1,11 @@
/*
* Copyright (C) 2018 the original author or authors.
* Copyright 2013-2018 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
@@ -16,8 +16,11 @@
package com.alibaba.cloud.sidecar.consul;
import com.ecwid.consul.v1.agent.model.NewService;
import java.util.List;
import com.alibaba.cloud.sidecar.SidecarProperties;
import com.ecwid.consul.v1.agent.model.NewService;
import org.springframework.cloud.client.serviceregistry.AutoServiceRegistrationProperties;
import org.springframework.cloud.consul.discovery.ConsulDiscoveryProperties;
import org.springframework.cloud.consul.discovery.HeartbeatProperties;
@@ -27,52 +30,58 @@ import org.springframework.cloud.consul.serviceregistry.ConsulRegistrationCustom
import org.springframework.context.ApplicationContext;
import org.springframework.core.env.Environment;
import java.util.List;
/**
* @author www.itmuch.com
*/
public class SidecarConsulAutoRegistration extends ConsulAutoRegistration {
public SidecarConsulAutoRegistration(NewService service, AutoServiceRegistrationProperties autoServiceRegistrationProperties, ConsulDiscoveryProperties properties, ApplicationContext context, HeartbeatProperties heartbeatProperties, List<ConsulManagementRegistrationCustomizer> managementRegistrationCustomizers) {
super(service, autoServiceRegistrationProperties, properties, context, heartbeatProperties, managementRegistrationCustomizers);
}
public static ConsulAutoRegistration registration(
AutoServiceRegistrationProperties autoServiceRegistrationProperties,
ConsulDiscoveryProperties properties, ApplicationContext context,
List<ConsulRegistrationCustomizer> registrationCustomizers,
List<ConsulManagementRegistrationCustomizer> managementRegistrationCustomizers,
HeartbeatProperties heartbeatProperties,
SidecarProperties sidecarProperties) {
public SidecarConsulAutoRegistration(NewService service,
AutoServiceRegistrationProperties autoServiceRegistrationProperties,
ConsulDiscoveryProperties properties, ApplicationContext context,
HeartbeatProperties heartbeatProperties,
List<ConsulManagementRegistrationCustomizer> managementRegistrationCustomizers) {
super(service, autoServiceRegistrationProperties, properties, context,
heartbeatProperties, managementRegistrationCustomizers);
}
NewService service = new NewService();
String appName = getAppName(properties, context.getEnvironment());
service.setId(getInstanceId(sidecarProperties, context.getEnvironment()));
if (!properties.isPreferAgentAddress()) {
service.setAddress(sidecarProperties.getIp());
}
service.setName(normalizeForDns(appName));
service.setTags(createTags(properties));
public static ConsulAutoRegistration registration(
AutoServiceRegistrationProperties autoServiceRegistrationProperties,
ConsulDiscoveryProperties properties, ApplicationContext context,
List<ConsulRegistrationCustomizer> registrationCustomizers,
List<ConsulManagementRegistrationCustomizer> managementRegistrationCustomizers,
HeartbeatProperties heartbeatProperties,
SidecarProperties sidecarProperties) {
// set health check, use alibaba sidecar self's port rather than polyglot app's port.
service.setPort(Integer.valueOf(context.getEnvironment().getProperty("server.port")));
setCheck(service, autoServiceRegistrationProperties, properties, context,
heartbeatProperties);
NewService service = new NewService();
String appName = getAppName(properties, context.getEnvironment());
service.setId(getInstanceId(sidecarProperties, context.getEnvironment()));
if (!properties.isPreferAgentAddress()) {
service.setAddress(sidecarProperties.getIp());
}
service.setName(normalizeForDns(appName));
service.setTags(createTags(properties));
service.setPort(sidecarProperties.getPort());
// set health check, use alibaba sidecar self's port rather than polyglot app's
// port.
service.setPort(
Integer.valueOf(context.getEnvironment().getProperty("server.port")));
setCheck(service, autoServiceRegistrationProperties, properties, context,
heartbeatProperties);
ConsulAutoRegistration registration = new ConsulAutoRegistration(service,
autoServiceRegistrationProperties, properties, context,
heartbeatProperties, managementRegistrationCustomizers);
customize(registrationCustomizers, registration);
return registration;
}
service.setPort(sidecarProperties.getPort());
ConsulAutoRegistration registration = new ConsulAutoRegistration(service,
autoServiceRegistrationProperties, properties, context,
heartbeatProperties, managementRegistrationCustomizers);
customize(registrationCustomizers, registration);
return registration;
}
public static String getInstanceId(SidecarProperties sidecarProperties,
Environment environment) {
return String.format("%s-%s-%s",
environment.getProperty("spring.application.name"),
sidecarProperties.getIp(), sidecarProperties.getPort());
}
public static String getInstanceId(SidecarProperties sidecarProperties,
Environment environment) {
return String.format("%s-%s-%s",
environment.getProperty("spring.application.name"),
sidecarProperties.getIp(),
sidecarProperties.getPort());
}
}

View File

@@ -1,11 +1,11 @@
/*
* Copyright (C) 2018 the original author or authors.
* Copyright 2013-2018 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
@@ -17,9 +17,9 @@
package com.alibaba.cloud.sidecar.consul;
import com.alibaba.cloud.sidecar.SidecarDiscoveryClient;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.cloud.consul.discovery.ConsulDiscoveryProperties;
import org.springframework.cloud.consul.serviceregistry.ConsulAutoRegistration;
import org.springframework.cloud.consul.serviceregistry.ConsulServiceRegistry;
@@ -27,30 +27,42 @@ import org.springframework.cloud.consul.serviceregistry.ConsulServiceRegistry;
/**
* @author www.itmuch.com
*/
@Slf4j
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
public class SidecarConsulDiscoveryClient implements SidecarDiscoveryClient {
private final ConsulDiscoveryProperties properties;
private final ConsulServiceRegistry serviceRegistry;
private final ConsulAutoRegistration registration;
@Override
public void registerInstance(String applicationName, String ip, Integer port) {
private static final Logger log = LoggerFactory
.getLogger(SidecarConsulDiscoveryClient.class);
if (!this.properties.isRegister()) {
log.debug("Registration disabled.");
return;
}
private final ConsulDiscoveryProperties properties;
serviceRegistry.register(registration);
private final ConsulServiceRegistry serviceRegistry;
}
private final ConsulAutoRegistration registration;
public SidecarConsulDiscoveryClient(ConsulDiscoveryProperties properties,
ConsulServiceRegistry serviceRegistry, ConsulAutoRegistration registration) {
this.properties = properties;
this.serviceRegistry = serviceRegistry;
this.registration = registration;
}
@Override
public void registerInstance(String applicationName, String ip, Integer port) {
if (!this.properties.isRegister()) {
log.debug("Registration disabled.");
return;
}
serviceRegistry.register(registration);
}
@Override
public void deregisterInstance(String applicationName, String ip, Integer port) {
if (!this.properties.isRegister() || !this.properties.isDeregister()) {
return;
}
serviceRegistry.deregister(registration);
}
@Override
public void deregisterInstance(String applicationName, String ip, Integer port) {
if (!this.properties.isRegister() || !this.properties.isDeregister()) {
return;
}
serviceRegistry.deregister(registration);
}
}

View File

@@ -1,11 +1,11 @@
/*
* Copyright (C) 2018 the original author or authors.
* Copyright 2013-2018 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
@@ -21,6 +21,7 @@ import com.alibaba.cloud.nacos.discovery.NacosDiscoveryClientAutoConfiguration;
import com.alibaba.cloud.sidecar.SidecarAutoConfiguration;
import com.alibaba.cloud.sidecar.SidecarDiscoveryClient;
import com.alibaba.cloud.sidecar.SidecarProperties;
import org.springframework.boot.autoconfigure.AutoConfigureBefore;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
@@ -31,18 +32,23 @@ import org.springframework.context.annotation.Configuration;
* @author www.itmuch.com
*/
@Configuration
@AutoConfigureBefore({NacosDiscoveryClientAutoConfiguration.class, SidecarAutoConfiguration.class})
@AutoConfigureBefore({ NacosDiscoveryClientAutoConfiguration.class,
SidecarAutoConfiguration.class })
@ConditionalOnClass(NacosDiscoveryProperties.class)
public class SidecarNacosAutoConfiguration {
@Bean
@ConditionalOnMissingBean
public SidecarNacosDiscoveryProperties sidecarNacosDiscoveryProperties(SidecarProperties sidecarProperties) {
return new SidecarNacosDiscoveryProperties(sidecarProperties);
}
@Bean
@ConditionalOnMissingBean
public SidecarDiscoveryClient sidecarDiscoveryClient(SidecarNacosDiscoveryProperties sidecarNacosDiscoveryProperties) {
return new SidecarNacosDiscoveryClient(sidecarNacosDiscoveryProperties);
}
@Bean
@ConditionalOnMissingBean
public SidecarNacosDiscoveryProperties sidecarNacosDiscoveryProperties(
SidecarProperties sidecarProperties) {
return new SidecarNacosDiscoveryProperties(sidecarProperties);
}
@Bean
@ConditionalOnMissingBean
public SidecarDiscoveryClient sidecarDiscoveryClient(
SidecarNacosDiscoveryProperties sidecarNacosDiscoveryProperties) {
return new SidecarNacosDiscoveryClient(sidecarNacosDiscoveryProperties);
}
}

View File

@@ -1,11 +1,11 @@
/*
* Copyright (C) 2018 the original author or authors.
* Copyright 2013-2018 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
@@ -18,35 +18,44 @@ package com.alibaba.cloud.sidecar.nacos;
import com.alibaba.cloud.sidecar.SidecarDiscoveryClient;
import com.alibaba.nacos.api.exception.NacosException;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* @author www.itmuch.com
*/
@Slf4j
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
public class SidecarNacosDiscoveryClient implements SidecarDiscoveryClient {
private final SidecarNacosDiscoveryProperties sidecarNacosDiscoveryProperties;
@Override
public void registerInstance(String applicationName, String ip, Integer port) {
try {
this.sidecarNacosDiscoveryProperties.namingServiceInstance()
.registerInstance(applicationName, ip, port);
} catch (NacosException e) {
log.warn("nacos exception happens", e);
}
}
private static final Logger log = LoggerFactory
.getLogger(SidecarNacosDiscoveryClient.class);
private final SidecarNacosDiscoveryProperties sidecarNacosDiscoveryProperties;
public SidecarNacosDiscoveryClient(
SidecarNacosDiscoveryProperties sidecarNacosDiscoveryProperties) {
this.sidecarNacosDiscoveryProperties = sidecarNacosDiscoveryProperties;
}
@Override
public void registerInstance(String applicationName, String ip, Integer port) {
try {
this.sidecarNacosDiscoveryProperties.namingServiceInstance()
.registerInstance(applicationName, ip, port);
}
catch (NacosException e) {
log.warn("nacos exception happens", e);
}
}
@Override
public void deregisterInstance(String applicationName, String ip, Integer port) {
try {
this.sidecarNacosDiscoveryProperties.namingServiceInstance()
.deregisterInstance(applicationName, ip, port);
}
catch (NacosException e) {
log.warn("nacos exception happens", e);
}
}
@Override
public void deregisterInstance(String applicationName, String ip, Integer port) {
try {
this.sidecarNacosDiscoveryProperties.namingServiceInstance()
.deregisterInstance(applicationName, ip, port);
} catch (NacosException e) {
log.warn("nacos exception happens", e);
}
}
}

View File

@@ -1,11 +1,11 @@
/*
* Copyright (C) 2018 the original author or authors.
* Copyright 2013-2018 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
@@ -16,31 +16,34 @@
package com.alibaba.cloud.sidecar.nacos;
import java.net.SocketException;
import com.alibaba.cloud.nacos.NacosDiscoveryProperties;
import com.alibaba.cloud.sidecar.SidecarProperties;
import lombok.RequiredArgsConstructor;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import java.net.SocketException;
/**
* @author itmuch.com
*/
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
public class SidecarNacosDiscoveryProperties extends NacosDiscoveryProperties {
private final SidecarProperties sidecarProperties;
@Override
public void init() throws SocketException {
super.init();
private final SidecarProperties sidecarProperties;
String ip = sidecarProperties.getIp();
if (StringUtils.isNotBlank(ip)) {
this.setIp(ip);
}
public SidecarNacosDiscoveryProperties(SidecarProperties sidecarProperties) {
this.sidecarProperties = sidecarProperties;
}
@Override
public void init() throws SocketException {
super.init();
String ip = sidecarProperties.getIp();
if (StringUtils.isNotBlank(ip)) {
this.setIp(ip);
}
Integer port = sidecarProperties.getPort();
this.setPort(port);
}
Integer port = sidecarProperties.getPort();
this.setPort(port);
}
}