консул первый бутстрап с конфигурацией весеннего облака

Я использую spring-cloud-config для централизованной настройки и консула для обнаружения сервисов. Подобно первой начальной загрузке eureka - поддерживает ли spring первую загрузку консула, то есть при загрузке клиентской службы - я должен искать сервер конфигурации через консул. В противном случае работает отлично, т.е. в config client 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;
      }
}

В структуре папок consul K / V store config / demo Ключ / Значение: spring.cloud.config.uri=http://localhost:8888

Config server git repo: не добавлять код сервера конфигурации для краткости demo.properties

server.port=9080
message=test

В идеале, когда я реализую концепцию начальной начальной загрузки consul - я думаю, что consul должен быть запущен, а клиент должен идентифицировать себя с помощью аннотации @EnableDiscoveryClient и в свойствах consul - найти URL-адрес сервера конфигурации и получить свойства конфигурации из конфигураций сервера. Но в моем случае служба обнаруживается и регистрируется в консуле, но я не могу прочитать свойства из репозитория git сервера конфигурации.


person Swetha V    schedule 14.04.2016    source источник


Ответы (2)


Это было сделано здесь. Он доступен в SNAPSHOTS и в RC2, который, надеюсь, выйдет на следующей неделе.

person spencergibb    schedule 14.04.2016

Я даю здесь свой пример кода для других. Мне пришлось много повозиться с файлом свойств, чтобы добраться до этого. Как ответил @spencergibb, он доступен только в SNAPSHOT пока.

На этот раз я не использовал свойства «ключ-значение» в consul. код сервера конфигурации: pom.xml:

<dependency>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-config-server</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-consul-discovery</artifactId>
 </dependency>

application.yml

 spring:
    profiles:
     active: native
    cloud:
     config:
       server:
        native:
          search-locations: file://${HOME}/properties 
    consul:
      port: 8500
      host: localhost
      enabled: true
      discovery:
        enabled: true
        register: true
        service-name: server --registers in consul as server instead of config-server 
        hostname: localhost
server:
  port: 8888

bootstrap.yml ::

spring:
  application:
    name: config-server

COnfigServerApplication.java

@EnableDiscoveryClient
@EnableConfigServer
@SpringBootApplication
public class SpringConfigServerApplication {
public static void main(String[] args) {
  SpringApplication.run(SpringConfigServerApplication.class, args);
 }
}

Клиентский микросервис: демонстрация

<parent>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-starter-parent</artifactId>
   <version>Brixton.BUILD-SNAPSHOT</version>
 <!--   <version>Brixton.M5</version> -->
   <relativePath /> 
 </parent>
<dependency>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-starter-config</artifactId>
 </dependency>
<dependency>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-starter-consul-all</artifactId>
 </dependency>

bootstrap.properties

spring.application.name=demo-spring-cloud-sleuth
spring.cloud.config.failFast=true
spring.cloud.config.retry.maxAttempts=20
spring.cloud.config.retry.initialInterval=3000
spring.cloud.config.enabled=true
spring.cloud.config.discovery.enabled=true
spring.cloud.config.discovery.serviceId=config-server
spring.cloud.consul.discovery.hostName=localhost
spring.cloud.consul.discovery.register=true -- unless this is there, the service fails to register in consul.

git файл свойств uri для клиента:

server.port=9082
message=message local
foo1=bar
person Swetha V    schedule 15.04.2016