本篇内容介绍了“Spring Cloud Alibaba Nacos配置中心使用ext-config,DataID, Group时无法获取到对应Group的配置的原因是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
在使用Spring Cloud配合Nacos Config作为配置中心来使用的时候,Nacos支持对多个环境的配置管理,通常通过命名空间来实现,比如测试环境,预发布环境。而如果使用同一个配置中心有多个项目组或者团队或者不同的模块管理的时候,通常使用Group来区分,Nacos Config相关的配置详情,在官方文档中都有过介绍,通过阅读可以了解,https://github.com/spring-cloud-incubator/spring-cloud-alibaba/wiki/Nacos-config,这里向大家分享一下,使用中遇到的一个问题,或者说是一点文档中描述不太明确的地方,Nacos Config, 支持自定义 Group 的配置以及支持自定义扩展的 Data Id 配置 ,其中Group默认使用的是DEFAULT_GROUP, 我们可以从nacos的源码 org.springframework.cloud.alibaba.nacos.NacosConfigProperties中看到,如果想支持对多个配置文件的使用,需要用到ext-config,spring.cloud.nacos.config.ext-config[n].data-id, spring.cloud.nacos.config.ext-config[n].group, spring.cloud.nacos.config.ext-config[n].refresh, 但是在使用的时候遇到了一个问题 ,就是在ext-config 里配置了和应用名相同的配置文件时,则实际去获取的不是ext-config的group而是使用的DEFAULT_GROUP来获取的,如果你在DEFAULT_GROUP没有配置文件,则什么都获取不到,相当于DEFAULT_GROUP覆盖掉了自定义配置中配置的Group,例如:当前服务的名称为 nacos-demo 既 spring.application.name=nacos-demo
spring.cloud.nacos.config.ext-config[0].data-id=nacos-demo.properties( ${spring.application.name}.properties )
spring.cloud.nacos.config.ext-config[0].group=DEMO
spring.cloud.nacos.config.ext-config[0].refresh=true
那么Client在获取配置的时候,默认是获取的 data-id为nacos-demo.properties group为DEFAULT_GROUP的配置文件,而取不到DEMO的配置,这是为什么呢? 从nacos的源码 NacosPropertySourceLocator 中可以看到
他的加载顺序是默认加载 SharedConfig共享配置,然后加载extConfig自定义配置,最后加载applicationConfig, 因此最后加载的会覆盖掉之前的配置,因此当你读取应用名同名的配置时会读取不到,因为配置中心里并没有配置 Group为 DEFAULT_GROUP的nacos-demo.properties。 spring.cloud.nacos.config.group的优先级会高于spring.cloud.nacos.config.ext-config[0].group的优先级
因此配置的时候要留意,如果是和应用名同名的配置文件,不要配置在 config.ext-config 中,直接配置在spring.cloud.nacos.config.group=DEMO,ext-config中配置应用名以外的配置文件,Group也可以配置为其他自定义组
spring.cloud.nacos.config.ext-config[0].data-id=(非应用名).properties
spring.cloud.nacos.config.ext-config[0].group=default
spring.cloud.nacos.config.ext-config[0].refresh=true,这样就不会出现获取不到配置文件的事情了。
Spring Cloud Alibaba Nacos Config 目前提供了三种配置能力从 Nacos 拉取相关的配置。
A: 通过 spring.cloud.nacos.config.shared-dataids
支持多个共享 Data Id 的配置
B: 通过 spring.cloud.nacos.config.ext-config[n].data-id
的方式支持多个扩展 Data Id 的配置
C: 通过内部相关规则(应用名、应用名+ Profile )自动生成相关的 Data Id 配置
当三种方式共同使用时,他们的一个优先级关系是:A < B < C
“Spring Cloud Alibaba Nacos配置中心使用ext-config,DataID, Group时无法获取到对应Group的配置的原因是什么”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。