Java Chassis使用配置中心
- Java Chassis使用以config-center命名的配置中心。
<dependency> <groupId>org.apache.servicecomb</groupId> <artifactId>config-cc</artifactId> </dependency>
如果项目已经直接或者间接包含如上依赖,则无需添加。Java Chassis包含如表1所示配置项,这些配置项的值指定了微服务在配置中心的身份,以及微服务和配置中心之间的交互。
表1 Java Chassis常用配置项 配置项
含义
缺省值
备注
servicecomb.service.application
所属应用
default
-
servicecomb.service.name
微服务名称
defaultMicroservice
-
servicecomb.service.version
微服务版本
1.0.0.0
-
servicecomb.service.environment
环境
-
取值为环境ID。如production,development等。
servicecomb.config.client.serverUri
访问地址,格式为http(s)://{ip}:{port},以“,”分隔多个地址
http://127.0.0.1:30103
config-center
servicecomb.config.client.tenantName
应用的租户名称
default
config-center
- Java Chassis使用以kie命名的配置中心。
需要在项目中增加如下依赖:
<dependency> <groupId>org.apache.servicecomb</groupId> <artifactId>config-kie</artifactId> </dependency>
如果项目已经直接或者间接包含如上依赖,则无需添加。Java Chassis包含如表2所示配置项,这些配置项的值指定了微服务在配置中心的身份,以及微服务和配置中心之间的交互。
表2 Java Chassis常用配置项 配置项
含义
缺省值
备注
servicecomb.service.application
所属应用
default
-
servicecomb.service.name
微服务名称
defaultMicroservice
-
servicecomb.service.version
微服务版本
1.0.0.0
-
servicecomb.service.environment
环境
-
取值为环境ID。如production,development等。
servicecomb.kie.serverUri
kie访问地址,格式为http(s)://{ip}:{port},以“,”分隔多个地址
-
kie
servicecomb.kie.firstRefreshInterval
首次刷新配置项的时间间隔,单位为毫秒
3000
kie
servicecomb.kie.refresh_interval
刷新配置项的时间间隔,单位为毫秒
3000
kie
servicecomb.kie.domainName
应用的租户名称
default
kie
- 第一种是使用archaius API,例子如下:
DynamicDoubleProperty myprop = DynamicPropertyFactory.getInstance() .getDoubleProperty("trace.handler.sampler.percent", 0.1);
archaius API支持callback处理配置变更:
myprop.addCallback(new Runnable() { public void run() { // 当配置项的值变化时,该回调方法会被调用 System.out.println("trace.handler.sampler.percent is changed!"); } });
- 第二种方式是使用Java Chassis提供的配置注入机制,使用这种方式能够非常简单的处理复杂配置,和配置优先级,例子如下:
@InjectProperties(prefix = "jaxrstest.jaxrsclient") public class Configuration { /* * 方法的 prefix 属性值 "override" 会覆盖标注在类定义的 @InjectProperties * 注解的 prefix 属性值。 * * keys属性可以为一个字符串数组,下标越小优先级越高。 * * 这里会按照如下顺序的属性名称查找配置属性,直到找到已被配置的配置属性,则停止查找: * 1) jaxrstest.jaxrsclient.override.high * 2) jaxrstest.jaxrsclient.override.low * * 测试用例: * jaxrstest.jaxrsclient.override.high: hello high * jaxrstest.jaxrsclient.override.low: hello low * 预期: * hello high */ @InjectProperty(prefix = "jaxrstest.jaxrsclient.override", keys = {"high", "low"}) public String strValue;
执行注入:
ConfigWithAnnotation config = SCBEngine.getInstance().getPriorityPropertyManager() .createConfigObject(Configuration.class, "key", "k");
- 第三中方式在和Spring、Spring Boot集成的时候使用,可以按照Spring、Spring Boot的原生方式读取配置,比如@Value、@ConfigurationProperties。Java Chassis将配置层次应用于Spring Environment中,Spring和Spring Boot读取配置的方式,也能够读取到microservice.yaml和动态配置的值。
有关Java Chassis读取配置的更多内容,请参考社区开发指南。