一尘不染

Iam使用spring-cloud-config进行集中配置

spring-boot

Iam使用spring-cloud-config进行集中配置,并使用consul进行服务发现。像eureka first bootstrap一样-
spring是否支持consul first bootstrap,即在启动客户端服务时-
我应该通过consul查找配置服务器。反之,则工作得很好,即-在配置客户端bootstrap.properties中-
我提供了spring.cloud.config.uri= http://
localhost:8888
,它可以找到配置服务器并从中提取配置。在我的客户端应用程序的配置存储库中,我提供如下的领事配置:

spring.cloud.consul.host=localhost , 
spring.cloud.consul.port=8500

但是,当我尝试使用Consul首先引导程序时,无法从配置服务器读取属性。

客户端应用程序(领事第一引导程序):

pom.xml
<parent>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-parent</artifactId>
      <!-- <version>Brixton.BUILD-SNAPSHOT</version> -->
      <version>Brixton.M5</version>
      <relativePath /> 
    </parent>
<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-aop</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.retry</groupId>
            <artifactId>spring-retry</artifactId>
        </dependency>
     <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-consul-config</artifactId>
        </dependency> 
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-consul-all</artifactId>
        </dependency>
<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-zuul</artifactId>
        </dependency>
</dependencies>

bootstrap.properties:

spring.application.name=demo
spring.cloud.config.failFast=true
spring.cloud.config.retry.maxAttempts=20
spring.cloud.config.retry.initialInterval=3000
spring.cloud.consul.host=localhost
spring.cloud.consul.port=8500

DemoApplication.java

@EnableDiscoveryClient
@EnableZuulProxy
@SpringBootApplication
public class DemoSleuthApplication {
    public static void main(String[] args) {
        SpringApplication.run(DemoSleuthApplication.class, args);
    }
}
@RefreshScope
@RestController
class RestAPIController 
{
    @Value(value = "${server.port}")
    String port;

    @Value(value = "${message}")
    String message;

@RequestMapping("/message")
      public String welcome(){
          String s = this.restTemplate.getForObject("http://localhost:"+this.port+"/message", String.class);
          return this.message + s;
      }
}

在领事K / V存储文件夹结构config / demo Key / Value中:
spring.cloud.config.uri=http://localhost:8888

配置服务器git repo:不为简洁demo.properties添加配置服务器代码

server.port=9080
message=test

理想情况下,当我实现consul first bootstrap的概念时-
我认为应该启动consul,客户端应使用@EnableDiscoveryClient批注并在consul属性中标识自己-
查找配置服务器url,并从服务器配置中获取配置属性。但就我而言,服务已在领事中发现并注册,但我无法从配置服务器git repo中读取属性。


阅读 295

收藏
2020-05-30

共1个答案

一尘不染

这里完成。它在SNAPSHOTS和RC2中可用,希望在下周发布。

2020-05-30