应用管理与运维平台 ServiceStage应用管理与运维平台 ServiceStage

更新时间:2021/09/15 GMT+08:00
分享

Java Chassis使用配置中心

Java Chassis使用以config-center命名的配置中心,需要在项目中增加如下依赖:
<dependency>
  <groupId>org.apache.servicecomb</groupId>
  <artifactId>config-cc</artifactId>
</dependency>
使用以kie命名的配置中心,需要在项目中增加如下依赖:
<dependency>
  <groupId>org.apache.servicecomb</groupId>
  <artifactId>config-kie</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

环境

-

production,development等

servicecomb.config.client.serverUri

访问地址,格式为http(s)://{ip}:{port},以“,”分隔多个地址

http://127.0.0.1:30103

config-center

servicecomb.config.client.refreshMode

配置更新模式,0为主动push,1为微服务周期pull

0

config-center

servicecomb.config.client.refreshPort

主动push端口

30104

config-center

servicecomb.config.client.refresh_interva

config-center pull模式轮询时间间隔,单位为毫秒

30000

config-center

servicecomb.config.client.tenantName

应用的租户名称

default

config-center

servicecomb.kie.serverUri

kie访问地址,格式为http(s)://{ip}:{port},以“,”分隔多个地址

-

kie

servicecomb.kie.enableLongPolling

长轮询(Long Polling)模式是否开启

true

kie

servicecomb.kie.firstRefreshInterval

首次刷新配置项的时间间隔,单位为毫秒

0

kie

servicecomb.kie.refreshInterval

刷新配置项的时间间隔,单位为毫秒

3000

kie

servicecomb.kie.domainName

应用的租户名称

default

kie

Java Chassis有多种方式可以读取动态配置,第一种是使用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读取配置的更多内容,请参考社区开发指南

分享:

    相关文档

    相关产品