Don't register with consul in bootstrap.
This allows the normal consul lifecycle to register and properly deregister when using config client discovery. fixes gh-213
This commit is contained in:
@@ -19,6 +19,7 @@ package org.springframework.cloud.consul.discovery;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
||||
import org.springframework.boot.autoconfigure.condition.SearchStrategy;
|
||||
import org.springframework.boot.autoconfigure.web.ServerProperties;
|
||||
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
||||
import org.springframework.cloud.commons.util.InetUtils;
|
||||
@@ -52,7 +53,7 @@ public class ConsulDiscoveryClientConfiguration {
|
||||
private ServletContext servletContext;
|
||||
|
||||
@Bean
|
||||
@ConditionalOnMissingBean
|
||||
@ConditionalOnMissingBean(search = SearchStrategy.CURRENT)
|
||||
public ConsulLifecycle consulLifecycle(ConsulDiscoveryProperties discoveryProperties,
|
||||
HeartbeatProperties heartbeatProperties) {
|
||||
ConsulLifecycle lifecycle = new ConsulLifecycle(consulClient, discoveryProperties, heartbeatProperties);
|
||||
|
||||
@@ -18,21 +18,31 @@ package org.springframework.cloud.consul.discovery.configclient;
|
||||
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
||||
import org.springframework.cloud.commons.util.InetUtils;
|
||||
import org.springframework.cloud.config.client.ConfigServicePropertySourceLocator;
|
||||
import org.springframework.cloud.consul.ConsulAutoConfiguration;
|
||||
import org.springframework.cloud.consul.discovery.ConsulDiscoveryClientConfiguration;
|
||||
import org.springframework.cloud.consul.discovery.ConsulDiscoveryProperties;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.context.annotation.Import;
|
||||
|
||||
/**
|
||||
* Eureka-specific helper for config client that wants to lookup the config server via
|
||||
* discovery.
|
||||
* Helper for config client that wants to lookup the config server via discovery.
|
||||
*
|
||||
* @author Dave Syer
|
||||
* @author Spencer Gibb
|
||||
*/
|
||||
@ConditionalOnClass(ConfigServicePropertySourceLocator.class)
|
||||
@ConditionalOnProperty(value = "spring.cloud.config.discovery.enabled", matchIfMissing = false)
|
||||
@Configuration
|
||||
@Import({ ConsulAutoConfiguration.class, ConsulDiscoveryClientConfiguration.class})
|
||||
public class ConsulDiscoveryClientConfigServiceBootstrapConfiguration {
|
||||
|
||||
@Bean
|
||||
public ConsulDiscoveryProperties consulDiscoveryProperties(InetUtils inetUtils) {
|
||||
ConsulDiscoveryProperties properties = new ConsulDiscoveryProperties(inetUtils);
|
||||
// for bootstrap, lifecycle (and hence registration) is not needed, just discovery client
|
||||
properties.getLifecycle().setEnabled(false);
|
||||
return properties;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -22,7 +22,7 @@ import org.junit.After;
|
||||
import org.junit.Test;
|
||||
import org.mockito.Mockito;
|
||||
import org.springframework.boot.autoconfigure.PropertyPlaceholderAutoConfiguration;
|
||||
import org.springframework.boot.test.EnvironmentTestUtils;
|
||||
import org.springframework.boot.test.util.EnvironmentTestUtils;
|
||||
import org.springframework.cloud.client.DefaultServiceInstance;
|
||||
import org.springframework.cloud.client.ServiceInstance;
|
||||
import org.springframework.cloud.commons.util.UtilAutoConfiguration;
|
||||
|
||||
@@ -48,6 +48,10 @@
|
||||
<groupId>org.springframework.cloud</groupId>
|
||||
<artifactId>spring-cloud-starter-consul-all</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.cloud</groupId>
|
||||
<artifactId>spring-cloud-starter-config</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.cloud</groupId>
|
||||
<artifactId>spring-cloud-starter-feign</artifactId>
|
||||
|
||||
7
src/test/resources/etc/configserver.json
Normal file
7
src/test/resources/etc/configserver.json
Normal file
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"service": {
|
||||
"name": "configserver",
|
||||
"address": "127.0.0.1",
|
||||
"port": 8888
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user