很多新手对SpringCloud动态配置变更监控的案例分析不是很清楚。为了帮助大家解决这个问题,下面小编就为大家详细讲解一下。有这种需求的人可以从中学习,希望你能有所收获。
00-1010配置中心包括原SpringCloud Config、国内开源阿里Nacos、携程Apollo等。其他功能是在配置热加载的基础上增加的。
配置中心具有热加载配置、修改配置-推送至程序-执行配置更新的功能。
但这些组件未能得到配置更新的具体内容(SpringCloud Config、Nacos、Apollo有待验证)。例如,获取已更改的配置测试,更新前为123,更新后为111。
SpringCloud Config、Nacos和Apollo都是通过将整个配置文件推送到服务进行配置比较来更新的。在这个阶段,用户无法从程序中获得更新的内容。
为了实现这个扩展的功能点,程序可以感知更新结果。在这个阶段,用户可以通过代码监控配置,监控配置更改并执行其他操作。
示例:获得推送配置更改,感知测试更改,并更新和同步数据。
感知结果集如:
{
`更新的配置密钥` :{。
在:“原始值”之前,
在:“更新值”之后
},
`更新的配置密钥` :{。
在:“原始值”之前,
在:“更新值”之后
}
}
简介
功能使用
ps:.的实际版本请使用最新版本
属国
groupIdcom.purgeteam/groupId
artifactIddynamic-config-spring-boot-starter/artifactId
version0.1.0.RELEASE/version
/dependency当然,实际情况要结合添加SpringCloud Config、Nacos、Apollo等动态配置依赖包。
dynamic-config-spring-boot-starter模块不包含上述依赖项,需要自己添加。
00-1010简介:打开此功能注释,并能够配置推送更新监控。
启动该类并添加@ enableddynamicconfigevent注释以打开配置更改监控功能。
@EnableDynamicConfigEvent
@回弹应用
public classdynamicconfigspringbootapplication {
publicationstativitmain(String[]args){ 0
springapplication . run(dynamicconfigspringbootpapplication . class,args);
}
}
添加依赖
创建NacosListener(名称是可选的)并实现applicationlistener actionconfigevent # on application entevent方法。
@Slf4j
@组件
公共图书馆
ic class NacosListener implements ApplicationListener<ActionConfigEvent> {
@Override
public void onApplicationEvent(ActionConfigEvent event) {
log.info("接收事件");
log.info(event.getPropertyMap().toString());
}
}
在 NacosListener#onApplicationEvent
方法里获取目标值, 作相应的逻辑处理。
ActionConfigEvent event:
public class ActionConfigEvent extends ApplicationEvent { // 事件说明 private String eventDesc; // 更新变化结果集 private Map<String, HashMap> propertyMap; ... }
ActionConfigEvent
主要包含 Map<String, HashMap> propertyMap;
, 从这里可以获取更新变化结果, propertyMap结构如下:
{ `被更新的配置key`:{ before: `原来的值`, after: `更新后的值` }, `被更新的配置key`:{ before: `原来的值`, after: `更新后的值` } }
更新配置演示
ps: 示例为 Nacos
其它配置中心无差别。
原始配置:
test.age=18 user.name=purgeyao
修改配置:
# test.age 将18更新为19 test.age=19 user.name=purgeyao
在 NacosListener#onApplicationEvent
方法加入端点调试观察 ActionConfigEvent
对象参数。
更新的 test.age
已经被记录在了 ActionConfigEvent.propertyMap
里了, 从 18 更新为 19。
控制台打印:
2019-10-17 10:44:09.221 INFO 54054 --- [-10.1.1.97_8848] c.p.dynamic.config.demo.NacosListener : 接收事件 2019-10-17 10:45:19.752 INFO 54054 --- [-10.1.1.97_8848] c.p.dynamic.config.demo.NacosListener : {test.age={before=18, after=19}}
上述功能基于 Nacos
、 SpringCloud Config
或基于 SpringCloud Config
之上构建的配置中心都可以使用, 其他配置中心待验证。
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对的支持。
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/51146.html