-
Notifications
You must be signed in to change notification settings - Fork 61
参数配置 动态参数
ShenJW edited this page Jul 1, 2016
·
75 revisions
- 什么是动态参数
服务发布后可以通过@See[Kepler Admin]实时调整的参数集合,包括:- @See[常用参数]及其他特性中声明支持动态参数的框架配置
- @Config声明的业务服务配置
- @Config
读取kepler.dynamic配置文件,当动态参数触发后回调对应方法并将最新配置回写至kepler.dynamic
- @See[示例下载], 可用于对照以下流程
- 在ClassPath中添加@See[kepler.dynamic]动态参数配置文件:
name=kepler
- 在服务中添加@Config标签配置:
@Config(name = "name", init = true) public void name(String name) { this.name = name; }
@Config.value表示动态参数配置文件的Key,@Config.init表示是否在初始化期间进行赋值
- 配置文件备份
- 动态参数触发最新配置回写时会对历史配置进行备份。
通过添加应用启动参数可以关闭备份
java -jar -Dbackup=false [启动包].jar
- 动态参数触发最新配置回写时会对历史配置进行备份。
- 配置文件定位
- 默认从ClassPath加载。
通过添加应用启动参数可以修改加载文件
java -jar -Ddynamic=[(file://|url://)] [启动包].jar
@See[加载路径的支持格式]
- 默认从ClassPath加载。
- 动态参数回调
动态参数默认同一时刻仅允许一个线程进行回调(基于ZooKeeper Watcher)
- 通过添加@Async可以使回调异步化:
@Async @Config(name = "trigger") public void dosomthing(String name) { // todo }
由于动态参数最终会同步至内存及物理磁盘。使用@Async如果失败,将无法保证配置的强一致性。
- 配置变更通知
单次动态参数回调可能包含多个配置,通过实现(@See[ConfigAware])可以感知所有配置变化public void changed(Map<String, String> current, Map<String, String> newconfig);
- 动态参数解析
- 默认支持
- String
- Boolean
- Long
- Integer
- Short
- Byte
- File
- Date
- 通过注册@See[ConfigParser]解析自定义类型
- @See[示例下载], 可用于对照以下流程
<bean class="com.kepler.impl.AppParser" />
- @See[示例下载], 可用于对照以下流程
- 默认支持