Nacos作為配置中心時,多個服務共用一個dataId的配置


寫在前面

本文是對我之前一篇文章《Spring Cloud+nacos+Feign,實現注冊中心及配置中心》的補充。此文章中簡單寫了如何將Nacos作為配置中心。在使用配置中心時,我們會遇到一種情況:多個微服務中有相同的配置,在配置中心中我們也就希望使用同一個dataId的配置。本文就是說明如何解決這個問題的。

多服務共用一個dataId

關於dataId,Nacos官網是這么解釋的:

在 Nacos Spring Cloud 中,dataId 的完整格式如下:

${prefix}-${spring.profile.active}.${file-extension} 
  • prefix 默認為 spring.application.name 的值,也可以通過配置項 spring.cloud.nacos.config.prefix來配置。
  • spring.profile.active 即為當前環境對應的 profile,詳情可以參考 Spring Boot文檔。 注意:當 spring.profile.active 為空時,對應的連接符 - 也將不存在,dataId 的拼接格式變成 ${prefix}.${file-extension}
  • file-exetension 為配置內容的數據格式,可以通過配置項 spring.cloud.nacos.config.file-extension 來配置。目前只支持 properties 和 yaml 類型

上面的這段寫的明白,我們可以用spring.cloud.nacos.config.prefix來替代spring.application.name的值。看到這里,大家肯定會認為,如果要多個服務共用一個dataId的配置,我將多個服務的spring.cloud.nacos.config.prefix寫成一樣的不就可以了嗎?然后興高采烈的去配置文件里做了這個配置,再啟動程序,然后測試,可郁悶的發現,沒有起作用。。。。。。。。,是不是很傷心,官方文檔明明這么寫的,卻不起作用。

之所以沒有起作用,是因為官方文檔里雖然寫了用spring.cloud.nacos.config.prefix配置,但沒有寫在哪里寫這個配置,大家往往根據經驗,寫在了application.properties中,不對的,文檔里沒寫,這個配置是要寫在bootstrap.properties中,工程中沒有這個文件?那就自己新建一個,和application.properties在相同路徑下。

下面是我代碼中的配置,我用的yaml格式,其他代碼,參照《Spring Cloud+nacos+Feign,實現注冊中心及配置中心

server:
  port: 7080
spring:
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848
      config:
        server-addr: 127.0.0.1:8848 prefix: chris
        file-extension: yaml
  application:
    name: demo2

Nacos對應的截圖為:

 

 

 

 上圖中,兩個箭頭所指要注意:配置格式選擇了YAML,配置內容就要按照YAML格式來寫,配置格式選擇了Properties,配置內容要按照Properties來寫,不要搞錯了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM