189 8069 5689

SpringCloudAlibabaNacos配置中心使用ext-config,DataID,Group时无法获取到对应Group的配置的原因是什么

本篇内容介绍了“Spring Cloud Alibaba Nacos配置中心使用ext-config,DataID, Group时无法获取到对应Group的配置的原因是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

专业从事成都网站制作、网站设计,高端网站制作设计,微信小程序开发,网站推广的成都做网站的公司。优秀技术团队竭力真诚服务,采用H5页面制作+CSS3前端渲染技术,成都响应式网站建设,让网站在手机、平板、PC、微信下都能呈现。建站过程建立专项小组,与您实时在线互动,随时提供解决方案,畅聊想法和感受。

在使用Spring Cloud配合Nacos Config作为配置中心来使用的时候,Nacos支持对多个环境的配置管理,通常通过命名空间来实现,比如Spring Cloud Alibaba Nacos配置中心使用ext-config,DataID, Group时无法获取到对应Group的配置的原因是什么测试环境,预发布环境。而如果使用同一个配置中心有多个项目组或者团队或者不同的模块管理的时候,通常使用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 Alibaba Nacos配置中心使用ext-config,DataID, Group时无法获取到对应Group的配置的原因是什么

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 中可以看到Spring Cloud Alibaba Nacos配置中心使用ext-config,DataID, Group时无法获取到对应Group的配置的原因是什么

他的加载顺序是默认加载 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的配置的原因是什么”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注创新互联网站,小编将为大家输出更多高质量的实用文章!


分享名称:SpringCloudAlibabaNacos配置中心使用ext-config,DataID,Group时无法获取到对应Group的配置的原因是什么
网站URL:http://cdxtjz.com/article/ihcpdo.html

其他资讯