有没有办法启动Discovery客户端spring应用程序,即使无法联系发现服务器?

时间:2016-03-07 07:12:48

标签: java spring annotations consul

我有这个微服务,它是一个发现客户端:

@SpringBootApplication
@EnableDiscoveryClient
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

我知道如果尝试在发现服务器尚未可用时启动它,它将失败。我想知道即使发现服务器仍然不可用,是否有办法启动应用程序。当我在构建期间为此运行JUnit单元测试时出现了这个问题。我在JUnit测试的启动/启动期间遇到以下堆栈跟踪片段:(顺便说一句,单元测试与服务发现无关)

  

2016-03-07 14:45:54.741 ERROR 3024 --- [主要]   o.s.boot.SpringApplication:应用程序启动失败

     

com.ecwid.consul.transport.TransportException :   java.net.ConnectException:拒绝连接   com.ecwid.consul.transport.AbstractHttpTransport.executeRequest(AbstractHttpTransport.java:80)   〜[consul-api-1.1.8.jar:na] at   com.ecwid.consul.transport.AbstractHttpTransport.makeGetRequest(AbstractHttpTransport.java:39)   〜[consul-api-1.1.8.jar:na] at   com.ecwid.consul.v1.ConsulRawClient.makeGetRequest(ConsulRawClient.java:81)   〜[consul-api-1.1.8.jar:na] at   com.ecwid.consul.v1.kv.KeyValueConsulClient.getKVValues(KeyValueConsulClient.java:150)   〜[consul-api-1.1.8.jar:na] at   com.ecwid.consul.v1.kv.KeyValueConsulClient.getKVValues(KeyValueConsulClient.java:143)   〜[consul-api-1.1.8.jar:na] at   com.ecwid.consul.v1.ConsulClient.getKVValues(ConsulClient.java:394)   〜[consul-api-1.1.8.jar:na] at   org.springframework.cloud.consul.config.ConsulPropertySource.init(ConsulPropertySource.java:63)   〜[spring-cloud-consul-config-1.0.0.M6.jar:1.0.0.M6] at   org.springframework.cloud.consul.config.ConsulPropertySourceLocator.locate(ConsulPropertySourceLocator.java:74)   〜[spring-cloud-consul-config-1.0.0.M6.jar:1.0.0.M6] at   org.springframework.cloud.bootstrap.config.PropertySourceBootstrapConfiguration.initialize(PropertySourceBootstrapConfiguration.java:89)   〜[spring-cloud-context-1.1.0.M5.jar:1.1.0.M5] at   org.springframework.boot.SpringApplication.applyInitializers(SpringApplication.java:640)   [spring-boot-1.3.2.RELEASE.jar:1.3.2.RELEASE] at   org.springframework.boot.SpringApplication.createAndRefreshContext(SpringApplication.java:343)   [spring-boot-1.3.2.RELEASE.jar:1.3.2.RELEASE] at   org.springframework.boot.SpringApplication.run(SpringApplication.java:307)   [spring-boot-1.3.2.RELEASE.jar:1.3.2.RELEASE] at   org.springframework.boot.SpringApplication.run(SpringApplication.java:1191)   [spring-boot-1.3.2.RELEASE.jar:1.3.2.RELEASE] at   org.springframework.boot.SpringApplication.run(SpringApplication.java:1180)   [spring-boot-1.3.2.RELEASE.jar:1.3.2.RELEASE] at ...

发现服务是Consul。

提前致谢!

2 个答案:

答案 0 :(得分:0)

现在点击同样的问题。显然,修复程序有been submitted

基本上已经实施了重试。

不确定它会在多长时间内发布。

老实说,我正在考虑尝试使用Eureka选项。

答案 1 :(得分:0)

可以通过将此属性设置为 false 来关闭Consul配置:spring.cloud.consul.enabled

所以我用这个属性和值创建了一个配置文件。在运行单元测试时使用该配置文件:

---
spring:
  profiles: unitTest
  cloud:
    consul:
      enabled: false