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去关闭此功能。   

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