配置推送在EDAS中分为全局配置推送和应用内部的配置推送,两者的区别在于权限的控制上。全局配置推送能操作该用户的所有配置信息,而应用内的配置推送只能操作该应用所属的配置信息。
本文档介绍应用内部的配置推送,全局配置推送,请参考
全局配置推送。
[backcolor=transparent]配置 在 EDAS 中是由三元组(group、DataId、Content)组成的一个配置信息,配置信息中的三个要素 group、DataId、Content 的意义如下
- group:分组名称,是命名空间,如 Java 中的 package,最大 128 个字符。
- DataId:配置名称,如 Java 中的类名,最大 256 个字符。group+DataId 确定一个配置,对应一个值。对于特殊字符,group 和 DataId 命名中仅允许包含”.”、”:”、”-“、”_” 这 4 种特殊字符。
- Content:配置中值的内容,最大 1024 个字符。
用户可以实时的增加、修改、删除配置,来动态的使得配置生效,无需更改代码、重新发布服务、重启服务。
说明:配置推送中的元素 [backcolor=transparent]分组 是在服务分组中创建。如果没有创建任何服务,进入配置页面,会有一条系统自动产生的配置,用户可以忽略这条系统配置。
配置推送
登录 EDAS 控制台。
在左侧导航栏中,单击 [backcolor=transparent]应用管理。
在应用列表页面,单击具体的应用名称。
在应用详情页面左侧的导航栏中,单击 [backcolor=transparent]配置推送。
在该页面中,可以在该应用内的进行配置推送的创建、查看、更新和删除等操作。操作步骤和全局配置推送中一致,具体步骤请参考全局配置推送的内容。
应用程序中监听配置
在 EDAS 控制台上创建、更新配置后,用户可在代码中对配置进行监听,随时接收配置的变化。
代码中引入以下依赖:
- [backcolor=transparent]<dependency>
- [backcolor=transparent] [backcolor=transparent]<groupId>[backcolor=transparent]com.alibaba.edas.configcenter[backcolor=transparent]</groupId>
- [backcolor=transparent] [backcolor=transparent]<artifactId>[backcolor=transparent]configcenter-client[backcolor=transparent]</artifactId>
- [backcolor=transparent] [backcolor=transparent]<version>[backcolor=transparent]1.0.2[backcolor=transparent]</version>
- [backcolor=transparent]</dependency>
代码示例:
- [backcolor=transparent]import[backcolor=transparent] java[backcolor=transparent].[backcolor=transparent]io[backcolor=transparent].[backcolor=transparent]IOException[backcolor=transparent];
- [backcolor=transparent]import[backcolor=transparent] com[backcolor=transparent].[backcolor=transparent]alibaba[backcolor=transparent].[backcolor=transparent]edas[backcolor=transparent].[backcolor=transparent]configcenter[backcolor=transparent].[backcolor=transparent]config[backcolor=transparent].[backcolor=transparent]ConfigChangeListener[backcolor=transparent];
- [backcolor=transparent]import[backcolor=transparent] com[backcolor=transparent].[backcolor=transparent]alibaba[backcolor=transparent].[backcolor=transparent]edas[backcolor=transparent].[backcolor=transparent]configcenter[backcolor=transparent].[backcolor=transparent]config[backcolor=transparent].[backcolor=transparent]ConfigService[backcolor=transparent];
- [backcolor=transparent]public[backcolor=transparent] [backcolor=transparent]class[backcolor=transparent] [backcolor=transparent]ConfigCenter[backcolor=transparent] [backcolor=transparent]{
- [backcolor=transparent] [backcolor=transparent]// 属性/开关
- [backcolor=transparent] [backcolor=transparent]private[backcolor=transparent] [backcolor=transparent]static[backcolor=transparent] [backcolor=transparent]String[backcolor=transparent] config [backcolor=transparent]=[backcolor=transparent] [backcolor=transparent]""[backcolor=transparent];
- [backcolor=transparent] [backcolor=transparent]//初始化的时候,给配置添加监听
- [backcolor=transparent] [backcolor=transparent]private[backcolor=transparent] [backcolor=transparent]static[backcolor=transparent] [backcolor=transparent]void[backcolor=transparent] initConfig[backcolor=transparent]()[backcolor=transparent] [backcolor=transparent]{
- [backcolor=transparent] [backcolor=transparent]ConfigService[backcolor=transparent].[backcolor=transparent]addListener[backcolor=transparent]([backcolor=transparent]"YourDataId"[backcolor=transparent],[backcolor=transparent] [backcolor=transparent]"YourGroup"[backcolor=transparent],
- [backcolor=transparent] [backcolor=transparent]new[backcolor=transparent] [backcolor=transparent]ConfigChangeListener[backcolor=transparent]()[backcolor=transparent] [backcolor=transparent]{
- [backcolor=transparent] [backcolor=transparent]public[backcolor=transparent] [backcolor=transparent]void[backcolor=transparent] receiveConfigInfo[backcolor=transparent]([backcolor=transparent]String[backcolor=transparent] configInfo[backcolor=transparent])[backcolor=transparent] [backcolor=transparent]{
- [backcolor=transparent] [backcolor=transparent]try[backcolor=transparent] [backcolor=transparent]{
- [backcolor=transparent] [backcolor=transparent]//当配置更新后,马上获取新的配置
- [backcolor=transparent] config [backcolor=transparent]=[backcolor=transparent] configInfo[backcolor=transparent];
- [backcolor=transparent] [backcolor=transparent]System[backcolor=transparent].[backcolor=transparent]out[backcolor=transparent].[backcolor=transparent]println[backcolor=transparent]([backcolor=transparent]configInfo[backcolor=transparent]);
- [backcolor=transparent] [backcolor=transparent]}[backcolor=transparent] [backcolor=transparent]catch[backcolor=transparent] [backcolor=transparent]([backcolor=transparent]Exception[backcolor=transparent] e[backcolor=transparent])[backcolor=transparent] [backcolor=transparent]{
- [backcolor=transparent] e[backcolor=transparent].[backcolor=transparent]printStackTrace[backcolor=transparent]();
- [backcolor=transparent] [backcolor=transparent]}
- [backcolor=transparent] [backcolor=transparent]}
- [backcolor=transparent] [backcolor=transparent]});
- [backcolor=transparent] [backcolor=transparent]}
- [backcolor=transparent] [backcolor=transparent]public[backcolor=transparent] [backcolor=transparent]static[backcolor=transparent] [backcolor=transparent]void[backcolor=transparent] main[backcolor=transparent]([backcolor=transparent]String[backcolor=transparent][][backcolor=transparent] args[backcolor=transparent])[backcolor=transparent] [backcolor=transparent]throws[backcolor=transparent] [backcolor=transparent]IOException[backcolor=transparent] [backcolor=transparent]{
- [backcolor=transparent] [backcolor=transparent]// 如果使用spring,此类等同于init方法。
- [backcolor=transparent] initConfig[backcolor=transparent]();
- [backcolor=transparent] [backcolor=transparent]// 测试让主线程不退出,因为订阅配置是守护线程,主线程退出守护线程就会退出。
- [backcolor=transparent] [backcolor=transparent]while[backcolor=transparent] [backcolor=transparent]([backcolor=transparent]true[backcolor=transparent])[backcolor=transparent] [backcolor=transparent]{
- [backcolor=transparent] [backcolor=transparent]try[backcolor=transparent] [backcolor=transparent]{
- [backcolor=transparent] [backcolor=transparent]Thread[backcolor=transparent].[backcolor=transparent]sleep[backcolor=transparent]([backcolor=transparent]1000[backcolor=transparent]);
- [backcolor=transparent] [backcolor=transparent]}[backcolor=transparent] [backcolor=transparent]catch[backcolor=transparent] [backcolor=transparent]([backcolor=transparent]InterruptedException[backcolor=transparent] e[backcolor=transparent])[backcolor=transparent] [backcolor=transparent]{
- [backcolor=transparent] [backcolor=transparent]}
- [backcolor=transparent] [backcolor=transparent]}
- [backcolor=transparent] [backcolor=transparent]}
- [backcolor=transparent] [backcolor=transparent]// 通过get接口把配置值暴露出去使用
- [backcolor=transparent] [backcolor=transparent]public[backcolor=transparent] [backcolor=transparent]static[backcolor=transparent] [backcolor=transparent]String[backcolor=transparent] getConfig[backcolor=transparent]()[backcolor=transparent] [backcolor=transparent]{
- [backcolor=transparent] [backcolor=transparent]return[backcolor=transparent] config[backcolor=transparent];
- [backcolor=transparent] [backcolor=transparent]}
- [backcolor=transparent]}