vlambda博客
学习文章列表

Nacos共享配置读取不到配置文件



问题
将本地bootstrap.yml中的数据源信息抽取出一个单独的配置文件放在远程,结果读取不到该配置。
具体配置如下:
spring:  application:  name: test  cloud:  nacos:  config:  enabled: true  server-addr: localhost:8848  file-extension: yml  group: NEW_GROUP  namespace: ba42e722-81aa-48f1-9944-9dca57d5f396  username: nacos  password: 123456         shared-configs[0]: test.yml           shared-configs[1]:datasource.yml
就是在以前的基础上又加了一行,shared-configs[1]: datasource.yml,其他没变,且不管加不加这一行的配置,test.yml中的内容都是可以被读取到的。而且奇怪的是,在另一个项目中是使用同样的配置方法,是可以使用的。

原因
另一个项目中生效,是因为那个项目的配置默认在DEFAUT_GROUP下,而没生效的这个配置是建在新的group下的。

解决
修改配置为:
spring:   application:        name: test    cloud:    nacos:           config:              enabled: true            server-addr: localhost:8848            file-extension: yml          group: NEW_GROUP            namespace: ba42e722-81aa-48f1-9944-9dca57d5f396          username: nacos              password: 123456             shared-configs[0]:                data-id: test.yml                 group: NEW_GROUP                          refresh: false                     shared-configs[1]:                     data-id: datasource.yml                       group: NEW_GROUP                       refresh: true
或者也可以使用extension-configs配置:
  
    
    
  
spring: application: name: test cloud: nacos: config: enabled: true server-addr: localhost:8848 file-extension: yml group: NEW_GROUP namespace: ba42e722-81aa-48f1-9944-9dca57d5f396 username: nacos         password: 123456 extension-configs:           - data-id: test.yml group: NEW_GROUP           - data-id: datasource.yml group: NEW_GROUP             refresh: true

总结
1. 不指定group时,默认为DEFAUT_GROUP。
2.  目前提供了三种配置能力从 Nacos 拉取相关的配置:
A. shared-configs[n]支持多个共享配置;
B. extension-configs[n]的方式支持多个扩展配置;
C. 通过内部相关规则(应用名、应用名+ Profile )自动生成相关的Data Id配置。
当三种方式共同使用时,他们的一个优先级关系是: A < B < C,且shared-configs的优先级,[0] <[1]。