2016-01-17 1 views
2

Je me demande comment partager certaines propriétés dans HashiCorp Consul en utilisant Spring Boot, j'ai lu qu'il y a la dépendance 'spring-cloud-consul-config' mais je n'ai pas trouvé comment charger un dossier avec tous les fichiers de propriétés à partir de là.Configuration distribuée avec HashiCorp Consul et Spring Boot

Utiliser Spring-Cloud Config serveur est-ce possible, par exemple:

spring: 
    profiles: 
    active: native 
    cloud: 
    config: 
     server: 
     native: 
      searchLocations: file:C:/springbootapp/properties/ 

Mais, comment le faire au printemps Nuage Config Consul?

Répondre

1

En supposant que vous ayez un consul sur un port standard, il n'y a pas besoin de beaucoup de configuration avec le démarrage par ressort. Le code entier est collé ci-dessous (pas d'autres fichiers de configuration). La partie difficile pour moi était de comprendre comment les clés/valeurs devraient être stockées dans le consul afin d'être visible par l'application de démarrage de printemps. Il y a quelques informations dans la documentation mais c'est un peu trompeur je pense.

Pour répondre à votre question, j'ai mis les valeurs sous la clé "config/bootstrap/key1" à l'intérieur de consul pour faire fonctionner l'exemple suivant.

Voici un exemple de code qui a fonctionné pour moi:

pom.xml

<dependency> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-web</artifactId> 
    <version>1.3.1.RELEASE</version> 
</dependency> 
<dependency> 
    <groupId>org.springframework.cloud</groupId> 
    <artifactId>spring-cloud-starter-consul-all</artifactId> 
    <version>1.0.0.M5</version> 
</dependency> 

Application.java

@SpringBootApplication 
@EnableDiscoveryClient 
@RestController 
public class Application { 

    @Autowired 
    private Environment env; 

    @RequestMapping("/") 
    public String home() { 
     return env.getProperty("key1"); 
    } 

    public static void main(String[] args) { 
     new SpringApplicationBuilder(Application.class).web(true).run(args); 
    } 

} 
+0

Salut Mateusz, j'ai pu lire les propriétés du consul si ils sont définis sur path/config/application/data, mon but est de publier à partir d'un dossier local tous les fichiers de propriétés vers le serveur Consul tel que Spring Config Server en utilisant le profil natif. Y a-t-il un moyen pour cela? –

+0

Je ne suis pas sûr si je comprends: vous souhaitez publier toutes les propriétés des fichiers au serveur consul lors du démarrage? Si oui, je ne pense pas que c'était l'objectif de la bibliothèque. Si ce n'est pas possible en utilisant la bibliothèque, je pense qu'il devrait être assez facile de coder en utilisant une bibliothèque client consul. –

+0

Oui, c'est tout. Avec Spring Cloud Config Server, c'est possible ... donc je peux partager toutes mes propriétés valorise mes applications client. –