1

我们在 Java 8 上使用 Spring Cloud Consul Config 1.3-RELEASE 来实现简单的应用程序 helloworldclient,按预期工作bootstrap.xml...

spring:
  cloud:
    consul:
      token: xxxx-xxxx-xxxx-xxxx
      discovery:
        enabled: true
        register: true
        service-name: helloworldclient-xyz123
        health-check-url: ${HEALTH_CHECK_URL}
      config:
        profile-separator: '/'
        enabled: true
        format: yaml
      host: ${CONSUL_HTTP_ADDR}
      port: 8500
  application:
    name: helloworldclient

使用 profile 运行应用程序dev,这是从/env...加载的配置

    "consul:config/helloworldclient/dev/": {
       "product[0].sku": "BL394D",
       "product[0].quantity": 8 
    }

一切都很好,但我们不确定为什么剩余的 consul 配置部分甚至存在,以及它们的用途:

  "consul:config/application/dev/": {},
  "consul:config/application/": {},

这很有趣,因为我们需要共享配置,以便多个应用程序可以从 consul 加载通用的、特定于环境的配置,如果可能的话;确定这是否是一个可行的解决方案的一些问题:

问题

  • 除了应用程序配置路径之外,SCC 是否还尝试从这些位置读取?
  • 默认文件夹是否config/application可配置,以便在启动时应用程序从中读取config/mysharedconfig
  • 它是否适合/config/application/dev用作共享配置位置,多个应用程序可以加载通用的、特定于环境的配置?
4

1 回答 1

0

我正在回答我自己的问题:

基于文档——以及一些快速测试——Consul 支持共享属性 via spring.cloud.consul.config.defaultContext,默认情况下设置为,在启动时有效地从、等application加载配置(当然,除了应用程序的配置)。并且是可定制的,因此我们将其更改为然后授予所有 ACL 令牌从该位置读取的权限。除非您正在使用 ACL 令牌,否则您不需要打扰它们,我只提到它是因为我们使用令牌并且此步骤是必要的。consul:config/applicationconsul:config/application/devdefaultContextcommoncfg

春天:云:领事:配置:defaultContext:commoncfg

于 2018-01-26T01:36:08.403 回答