現象
Eureka client啓動時出現“No URLs will be polled as dynamic configuration sources”警告,
並提示:需要配置archaius.configurationSource.additionalURL或創建config.properties。
WARN 1722 --- [ main] c.n.c.sources.URLConfigurationSource : No URLs will be polled as dynamic configuration sources.
INFO 1722 --- [ main] c.n.c.sources.URLConfigurationSource : To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
WARN 1722 --- [ main] c.n.c.sources.URLConfigurationSource : No URLs will be polled as dynamic configuration sources.
INFO 1722 --- [ main] c.n.c.sources.URLConfigurationSource : To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
分析
根據錯誤提示可以找到com.netflix.config.sources.URLConfigurationSource類,其中包含初始化過程,這裏就不細說了。
分析可知道由於eureka-client包內引入了netflix-archaius包,默認需要加載配置源,無法加載配置元導致系統警告。
netflix-archaius與spring-config和apollo等配置組建類似。
解決辦法
方法一(推薦)
排除netflix-archaius引入,在不使用archaius組件前提下。
入還引入了其他netflix組件,可能也會有archaius引入,需要一起exclusion。
<!-- 基於eureka的功能 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
<exclusions>
<exclusion>
<artifactId>spring-cloud-starter-netflix-archaius</artifactId>
<groupId>org.springframework.cloud</groupId>
</exclusion>
</exclusions>
</dependency>
<!-- 基於ribbon的功能 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
<exclusions>
<exclusion>
<artifactId>spring-cloud-netflix-archaius</artifactId>
<groupId>org.springframework.cloud</groupId>
</exclusion>
</exclusions>
</dependency>
方法二
在resources目錄下創建一個空的config.properties文件。
方法三
通過啓動參數“-Darchaius.configurationSource.additionalUrls”制定配置文件
-Darchaius.configurationSource.additionalUrls="classpath:extra.properties,file:///home/user/other-extra.properties"