網上有不少nacos搭建的文章,阿里巴巴甚至出了一本<<Spring Cloud Alibaba從入門到實戰>>的書,書名如下:

里面有講到nacos分布式配置,不清楚是作者沒講清楚,還是nacos,spring cloud版本等的問題,按照這些配置來搭建,會碰到各種各樣的問題,讓你看不到預期的效果,本文章分上和下兩篇,上篇講典型的踩坑,下篇講詳細的搭建,并附上源代碼,
踩坑1
現象:nacos安裝檔案下回來了,在windows dos下運行:startup.cmd,發現報例外:org.springframework.context.ApplicationContextException: Unable to start web server; nested exception is org.springframework.boot.web.server.WebServerException: Unable to start embedded Tomcat,截圖如下
解決方案:這種情況是由于在單機運行,我們需要指定單機運行模式,正確運行方式是:.\startup.cmd -m standalone
踩坑2
現象:nacos運行起來了,在Spring Cloud中也能夠讀取到nacos中配置的資料,但當nacos重繪資料后,在Spring Cloud中居然讀不到,SpringCloud 控制臺Console輸出如下:
o.s.c.e.event.RefreshEventListener :Refresh keys changed: [].仔細觀察日志,發現應該是沒有keys重繪,要不然Refresh keys changed的陣列不會是一個空值[].
解決方案:在bootstrap.properties里,一定要加上下面這幾行:
spring.cloud.nacos.config.namespace=bd1caf11-e4f1-4dd0-9a4b-2c32041c64e2 //指明命名空間id spring.cloud.nacos.config.extension-configs[0].data-id=nacos-config-sample.properties//指明properties的名稱,否則獲取不到重繪后的配置 spring.cloud.nacos.config.extension-configs[0].refresh=true //設定重繪refresu=true
上面的幾個配置說明如下:
1)spring.cloud.nacos.config.namespace=bd1caf11-e4f1-4dd0-9a4b-2c32041c64e2
新建一個namespace,記住它的id,然后再此namespace下新建配置,例如下面新建了一個名為testnamespace的namespace,它的ID為bd1caf11-e4f1-4dd0-9a4b-2c32041c64e2,在這個namespace下,新建了一個名為nacos-config-sample.properties的配置,那么在spring cloud的bootstrap.properties里需要指明config的namespace.


2)spring.cloud.nacos.config.extension-configs[0].data-id=nacos-config-sample.properties
設定對應的data-id,格式是:應用名稱.properties,例如專案名為:nacos-config-sample,故data-id為nacos-config-sample.properties,如下所示:

3)spring.cloud.nacos.config.extension-configs[0].refresh=true
這個配置必須加上,否則獲取不到重繪后的配置,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/543252.html
標籤:Java
