这是本节的多页打印视图。 点击此处打印.

返回本页常规视图.

快速开始

快速开始使用

感谢您对Capa的支持!

1 - 使用Configuration API

使用Configuration API进行应用级配置管理.

简介

  1. CapaConfigurationClient提供的配置能力,需要实现具体的实现类来适配不同的平台(通过继承CapaConfigStoreSpi抽象类),如示例DemoCapaConfigStore

  2. 通过spi机制实现对具体实现类的加载。具体配置过程为:在项目resources路径下,新增capa-component-configuration.properties文件。

    在文件中新增属性key:“group.rxcloud.capa.component.configstore.CapaConfigStore”,value:“实现类的全路径”;新增属性key:“CONFIGURATION_COMPONENT_STORE_NAME”,value:“config store name"示例如下:

    //capa-component-configuration.properties文件
    group.rxcloud.capa.component.configstore.CapaConfigStore=group.rxcloud.capa.spi.demo.configstore.DemoCapaConfigStore
    CONFIGURATION_COMPONENT_STORE_NAME=DEMO CONFIG
    
  3. 调用相应Configuration API进行应用级配置管理

API使用步骤

Demo示例

第一步:构建单例Configuration Client

public final class CapaConfigStoreClientProvider {

    private static volatile CapaConfigurationClient client;

    public static CapaConfigurationClient getClient() {
        if (client == null) {
            synchronized (CapaConfigStoreClientProvider.class) {
                if (client == null) {
                    StoreConfig storeConfig = new StoreConfig();
                    storeConfig.setStoreName(Optional.ofNullable(CapaProperties.COMPONENT_PROPERTIES_SUPPLIER.apply("configuration").getProperty("CONFIGURATION_COMPONENT_STORE_NAME")).orElse("UN_CONFIGURED_STORE_CONFIG_NAME"));
                    client = new CapaConfigurationClientBuilder(storeConfig).build();
                }
            }
        }
        return client;
    }

    private CapaConfigStoreClientProvider() {
    }
}

第二步:通过提供的api对配置进行读/订阅/删除/保存等操作

  1. 读配置操作(getConfiguration)
//拿到单例client
private static final CapaConfigurationClient client = CapaConfigurationClientSingleton.getClient();

//getConfiguration()其中一个重载方法
Mono<List<ConfigurationItem<User>>> configMono = client.getConfiguration(new ConfigurationRequestItem(),TypeRef.get(User.class));

//getConfiguration()另一个重载方法
Mono<List<ConfigurationItem<User>>> configMono = client.getConfiguration("config", 
        SERVICE_APP_ID,
        Lists.newArrayList("test.json"),
        metaDataMap,
        "group",
        "label"
        TypeRef.get(User.class));

//阻塞获取配置结果
List<ConfigurationItem<User>> config = configMono.block();
  1. 订阅配置操作(subscribeConfiguration)
//本地存配置的变量
private SubConfigurationResp<String> cur;

//subscribeConfiguration()其中一个重载方法
Flux<SubConfigurationResp<User>> configFlux = client.subscribeConfiguration(new ConfigurationRequestItem(),TypeRef.get(User.class))

//subscribeConfiguration()另一个重载方法
Flux<SubConfigurationResp<User>> configFlux = client.subscribeConfiguration("config", 
        SERVICE_APP_ID,
        Lists.newArrayList("test.json"),
        metaDataMap,
        "group",
        "label"
        TypeRef.get(User.class));

//订阅后续的变更并更新原数据
configFlux.subscribe(resp -> cur.setItems(resp.getItems()));
  1. 保存配置操作(saveConfiguration)
Mono<Void> configFlux = client.saveConfiguration(new SaveConfigurationRequest());
  1. 删除配置操作()
Mono<Void> configFlux = client.deleteConfiguration(new ConfigurationRequestItem());

ps:以上api存在重载方法,点击此处查询全部api列表

2 - 使用RPC API

使用RPC API进行远程调用.

步骤

示例

  1. 构建 RPC Client
CapaRpcClient capaRpcClient = new CapaRpcClientBuilder().build();
  1. 调用请求
  Mono<byte[]> responseMono = capaRpcClient.invokeMethod(SERVICE_APP_ID,
        "hello",
        "hello",
        HttpExtension.POST,
        null,
        TypeRef.BYTE_ARRAY);
  1. 获取调用结果
byte[] response = responseMono.block();

解释

  1. CapaRpcClient 提供的 RPC 能力,需要具体实现,如示例 DemoCapaHttp
  2. 实现后的DemoCapaHttp,需要在 capa-component-rpc.properties 中进行配置,通过SPI机制实现加载。