Iam使用spring-cloud-config进行集中配置,并使用consul进行服务发现。像eureka first bootstrap一样- spring是否支持consul first bootstrap,即在启动客户端服务时- 我应该通过consul查找配置服务器。反之,则工作得很好,即-在配置客户端bootstrap.properties中- 我提供了spring.cloud.config.uri= http:// localhost:8888,它可以找到配置服务器并从中提取配置。在我的客户端应用程序的配置存储库中,我提供如下的领事配置:
spring.cloud.config.uri
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
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中读取属性。
@EnableDiscoveryClien
在这里完成。它在SNAPSHOTS和RC2中可用,希望在下周发布。