linux阿波罗配置文件放在哪,Apollo阿波罗配置中心

江志业
2023-12-01

一、准备工作

1.2.1 AppId classpath:/META-INF/app.properties  内容app.id=YOUR-APP-ID

1.2.2 Environment 对于Mac/Linux,文件位置为/opt/settings/server.properties 例如env=DEV 详细见文档。

1.2.3 本地缓存路径 /opt/data/{appId}/config-cache (权限)

二、Maven Dependency

com.ctrip.framework.apollo

apollo-client

0.7.0

三、客户端用法

3.1 API使用方式

Config config = ConfigService.getAppConfig(); //config instance is singleton for each namespace and is never null

String someKey = "someKeyFromDefaultNamespace";

String someDefaultValue = "someDefaultValueForTheKey";

String value = config.getProperty(someKey, someDefaultValue);3.1.2 监听配置变化事件

Config config = ConfigService.getAppConfig(); //config instance is singleton for each namespace and is never null

config.addChangeListener(new ConfigChangeListener() {

@Override

public void onChange(ConfigChangeEvent changeEvent) {

System.out.println("Changes for namespace " + changeEvent.getNamespace());

for (String key : changeEvent.changedKeys()) {

ConfigChange change = changeEvent.getChange(key);

System.out.println(String.format("Found change - key: %s, oldValue: %s, newValue: %s, changeType: %s", change.getPropertyName(), change.getOldValue(), change.getNewValue(), change.getChangeType()));

}

}

});3.1.3 获取公共Namespace的配置

String somePublicNamespace = "CAT";

Config config = ConfigService.getConfig(somePublicNamespace); //config instance is singleton for each namespace and is never null

String someKey = "someKeyFromPublicNamespace";

String someDefaultValue = "someDefaultValueForTheKey";

String value = config.getProperty(someKey, someDefaultValue);3.2 Spring整合方式

3.2.1 基于XML的配置

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:apollo="http://www.ctrip.com/schema/apollo"

xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd

http://www.ctrip.com/schema/apollo http://www.ctrip.com/schema/apollo.xsd">

3.2.3 Spring Annotation支持

Apollo同时还增加了两个新的Annotation来简化在Spring环境中的使用。

@ApolloConfig

用来自动注入Config对象

@ApolloConfigChangeListener

用来自动注册ConfigChangeListener

public class TestApolloAnnotationBean {

@ApolloConfig

private Config config; //inject config for namespace application

@ApolloConfig("application")

private Config anotherConfig; //inject config for namespace application

@ApolloConfig("FX.apollo")

private Config yetAnotherConfig; //inject config for namespace FX.apollo

@Value("${batch:100}")

private int batch;

//config change listener for namespace application

@ApolloConfigChangeListener

private void someOnChange(ConfigChangeEvent changeEvent) {

//update injected value of batch if it is changed in Apollo

if (changeEvent.isChanged("batch")) {

batch = config.getIntProperty("batch", 100);

}

}

//config change listener for namespace application

@ApolloConfigChangeListener("application")

private void anotherOnChange(ConfigChangeEvent changeEvent) {

//do something

}

//config change listener for namespaces application and FX.apollo

@ApolloConfigChangeListener({"application", "FX.apollo"})

private void yetAnotherOnChange(ConfigChangeEvent changeEvent) {

//do something

}

//example of getting config from Apollo directly

//this will always return the latest value of timeout

public int getTimeout() {

return config.getIntProperty("timeout", 200);

}

//example of getting config from injected value

//the program needs to update the injected value when batch is changed in Apollo using @ApolloConfigChangeListener shown above

public int getBatch() {

return this.batch;

}

}转载文章:

Apollo配置

 类似资料: