磁盘 microservice.yaml 环境变量, 及环境变量制定的 yaml 文件
可以参考和调试工程中的UT代码以获取如何使用的详细信息
如:
YAMLConfigurationSource configSource = new YAMLConfigurationSource(); DynamicConfiguration configuration = new DynamicConfiguration(configSource, new FixedDelayPollingScheduler()); ConfigurationManager.install(configuration);
配置文件默认是classpath下的microservice.yaml, 但是可以通过环境变量传入其他文件,可以设置的环境变量为:
变量 | 描述 |
---|---|
cse.configurationSource.additionalUrls | 配置文件的列表,以,分隔的多个包含具体位置的完整文件名 |
cse.configurationSource.defaultFileName | 默认配置文件名 |
cse.config.client.refreshMode | 应用配置的刷新方式,0为config-center主动push,1为client周期pull,默认为0 |
cse.config.client.refreshPort | config-center推送配置的端口 |
cse.config.client.tenantName | 应用的租户名称 |
cse.config.client.serviceName | 应用名称 |
cse.config.client.regUri | service-center访问地址,http(s)://{ip}:{port},以,分隔多个地址(可选,若不配置,则使用cse.config.client.serverUri中的配置中心地址) |
cse.config.client.serverUri | config-center访问地址,http(s)://{ip}:{port},以,分隔多个地址(可选,当cse.config.client.regUri配置为空时该配置项才会生效) |
举例:
DynamicDoubleProperty myprop = DynamicPropertyFactory.getInstance().getDoubleProperty("trace.handler.sampler.percent", 0.1);
具体方法可参考API DOC
可以注册callback处理配置变更:
myprop.addCallback(new Runnable() { public void run() { // Handle configuration changes } });
有些情况下,我们要屏蔽我们使用的一些开源组件的配置并给用户提供我们自己的配置项。在这种情况下,可以通过classpath下的config.yaml进行映射定义:
registry: client: serviceUrl: defaultZone: eureka.client.serviceUrl.defaultZone
定义映射后,在配置装载的时候框架会默认进行映射,把以我们定义的配置项映射为开源组件可以认的配置项。
## 多配置源的继承配置 参考测试代码, 在初始化配置的时候按照测试代码中的方式对多个ConfigurationSource进行初始化以实现继承式的配置装载。