Spring Cloud Config 自定義外部配置遇到的健康指示器遇到的問題

Spring Cloud Config配置中心可以使用本地,git,svn以及數據庫方式實現配置存儲等等,也可以通過自己自定義其他外部配置來獲取配置數據,比如通過連接mogodb, 或者鏈接zookeeper, 來實現配置數據的獲取,只要定義類去實現EnvironmentRepository接口即可。

public class CustomEnvironmentRepository implements EnvironmentRepository {
	@Override
	public Environment findOne(String application, String profile, String label) {
		Environment environment = new Environment(application, StringUtils.commaDelimitedListToStringArray(profile), label, null, null);
		PropertySource propertySource = new PropertySource(name, sourceMap); 
		environment.add(propertySource);		
		return environment.add;
	}
}

各個客戶端在連接註冊中心,獲取到配置中心實例後,會調用上面這段代碼邏輯從配置中心獲取到 Environment數據變量,上線環境後,遇到了一個問題,查看日誌,發現這塊邏輯被不停的調用,每20多秒就會調用一次,application的name爲 app,通過查看SpringCloudConfig的官方文檔知道Config Server 通過一個健康指示器來檢測配置的EnvironmentRepository是否正常工作。 默認情況下會向EnvironmentRepository詢問一個名字爲app的應用配置,EnvironmentRepository實例迴應default配置。   也就是說當健康監視器默認開啓的時候,會不停的調用findOne來檢測,配置是否可用,是否會出現異常,

這段代碼是org.springframework.cloud.config.server.config.ConfigServerHealthIndicator類裏初始化名稱爲application名字爲app的代碼

	@PostConstruct
	public void init() {
		if (this.repositories.isEmpty()) {
			this.repositories.put("app", new Repository());
		}
	}
如果想停止掉這樣的檢測可以通過配置spring.cloud.config.server.health.enabled=false去關閉此功能。   

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章