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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值