温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

SpringCloud动态配置变化监控的实例分析

发布时间:2021-10-27 09:19:37 来源:亿速云 阅读:289 作者:柒染 栏目:大数据

SpringCloud动态配置变化监控的实例分析,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

简介

配置中心有原生的 SpringCloud Config 、国内开源的 阿里 Nacos、携程 Apollo 等。 都是配置热加载的基础上增加了其他的功能。

配置中心具有配置热加载,修改配置 -> 推送到程序 -> 执行配置更新。

而获取配置更新的具体内容,这些组件都没有做到(SpringCloud ConfigNacos, Apollo待验证 )。如:获取变化的配置 test 更新前为 123 ,更新后为 111

SpringCloud ConfigNacosApollo待验证 配置更新都是将整个配置文件推送给服务进行配置对比结果进行更新。这个阶段用户无法从程序中获取更新的内容。

为了实现这个扩展功能点,更新结果可以让程序感知。 在这个阶段用户通过code可以实现配置监听, 监听到某个配置变化做其他操作等。

示例: 获取到推送配置变化, 感知到 test 发生变化, 做更新同步数据操作等等。

感知结果集如:

{
    `被更新的配置key`:{
        before: `原来的值`,
        after: `更新后的值`
    },
    `被更新的配置key`:{
        before: `原来的值`,
        after: `更新后的值`
    }
}

功能使用

添加依赖

ps: 实际version版本请使用最新版

<dependency>
  <groupId>com.purgeteam</groupId>
  <artifactId>dynamic-config-spring-boot-starter</artifactId>
  <version>0.1.0.RELEASE</version>
</dependency>

当然实际情况要结合添加动态配置依赖包 SpringCloud ConfigNacosApollo

dynamic-config-spring-boot-starter 模块不包含以上依赖, 需要自行添加。

@EnableDynamicConfigEvent

简介: 开启这个特性注解,具备配置推送更新监听能力。

启动类添加 @EnableDynamicConfigEvent 注解开启配置变化监听功能。

@EnableDynamicConfigEvent
@SpringBootApplication
public class DynamicConfigSpringBootApplication {

  public static void main(String[] args) {
    SpringApplication.run(DynamicConfigSpringBootApplication.class, args);
  }

}

编写事件接收器

创建 NacosListener(名称随意) 实现 ApplicationListener<ActionConfigEvent>#onApplicationEvent 方法

@Slf4j
@Component
public 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 对象参数。

SpringCloud动态配置变化监控的实例分析

更新的 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}}

上述功能基于 NacosSpringCloud Config 或基于 SpringCloud Config 之上构建的配置中心都可以使用, 其他配置中心待验证。

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注亿速云行业资讯频道,感谢您对亿速云的支持。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI