(目录)
一、 spring环境下动态刷新源码分析
应用运行时动态变更线程池参数,包括不限于核心、最大线程、阻塞队列大小和拒绝策略等,支持应用集群下不同节点线程池配置差异化
1. 注解标记线程池实例
线程池上加@Bean注解注入到Spring容器中,使用 @DynamicThreadPool 注解标记他为动态线程池
2.配置中心更新配置的监听器
注册配置中心的监听器于项目中,比如Apollo:
Apollo源码中com.ctrip.framework.apollo.internals.AbstractConfig#notifyAsync 方法:
回调了自己的监听逻辑,listener.onChange(changeEvent);
3. 监听到变化,发送配置比变更Event
监听配置中心篇配置变化,发送配置变更事件
通过继承Spring的ApplicationListener监听ThreadPoolConfigDynamicRefreshEvent
动态刷新事件。
监听器类及方法路径:
cn.hippo4j.config.springboot.starter.refresher.event.DynamicThreadPoolRefreshListener#onApplicationEvent
动态刷新成功