您好,登錄后才能下訂單哦!
本篇內容介紹了“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進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。