0
点赞
收藏
分享

微信扫一扫

【Hippo4j动态线程池】Spring环境下线程池动态刷新功能源码分析

(目录)

一、 spring环境下动态刷新源码分析

应用运行时动态变更线程池参数,包括不限于核心、最大线程、阻塞队列大小和拒绝策略等,支持应用集群下不同节点线程池配置差异化

image-20231115164900717

1. 注解标记线程池实例

线程池上加@Bean注解注入到Spring容器中,使用 @DynamicThreadPool 注解标记他为动态线程池

2.配置中心更新配置的监听器

注册配置中心的监听器于项目中,比如Apollo:

image-20231101171002084

Apollo源码中com.ctrip.framework.apollo.internals.AbstractConfig#notifyAsync 方法:

回调了自己的监听逻辑,listener.onChange(changeEvent);

image-20231101171047326

image-20231101171435563

3. 监听到变化,发送配置比变更Event

监听配置中心篇配置变化,发送配置变更事件

image-20231101172040195

image-20231101172137191

通过继承Spring的ApplicationListener监听ThreadPoolConfigDynamicRefreshEvent

动态刷新事件。

监听器类及方法路径:

cn.hippo4j.config.springboot.starter.refresher.event.DynamicThreadPoolRefreshListener#onApplicationEvent

image-20231101172837600

动态刷新成功

image-20231101172215690

举报

相关推荐

0 条评论