我们在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
运行包含个人资料dev
的应用,这是来自/env
的加载配置...
"consul:config/helloworldclient/dev/": {
"product[0].sku": "BL394D",
"product[0].quantity": 8
}
一切都很好,但我们不确定为什么剩下的领事配置部分甚至存在,以及它们用于什么:
"consul:config/application/dev/": {},
"consul:config/application/": {},
这很有趣,因为我们需要共享配置,以便多个应用程序可以从consul加载常见的,特定于环境的配置,如果可能的话;一些问题,以确定这是否是一个可行的解决方案:
问题
config/application
是否可配置,以便在启动时应用从config/mysharedconfig
读取?/config/application/dev
用作共享配置位置,其中多个应用程序可以加载常见的特定于环境的配置?答案 0 :(得分:0)
我回答了我自己的问题:
基于documentation - 以及一些快速测试 - Consul通过spring.cloud.consul.config.defaultContext
支持共享属性,默认设置为application
,从consul:config/application
有效加载配置,consul:config/application/dev
等,在启动时(当然还有app的配置)。 defaultContext
是可自定义的,因此我们将其更改为commoncfg
,然后授予所有ACL令牌从该位置读取的权限。你不需要打扰ACL令牌,除非你使用它们,我只提及它,因为我们使用令牌,这一步是必要的。
弹簧: 云: 领事: 配置: defaultContext:commoncfg