动态线程池
关于动态线程池,说白了也就是将线程池中的那个几个核心参数配置到nacos中
,然后利用动态刷新nacos中的配置(不用重启服务),将线程池的使用情况读取渲染到UI页面,从而可以根据服务器的cpu的使用情况,动态调整核心参数(核心线程数,最大线程数,阻塞队列的可容纳的任务量大小...)
动态读取nacos中的配置有两种方式:
1. 通过@RefreshScope
动态读取核心参数
2. 通过自定义方式具体如下:
- a. 自己实现一个NacosConfigListener 实现 ApplicationRunner 重写其中的run()方法。原因如下
-
b. 在
重写的run()
方法中实现对nacos配置的动态监听;注入NacosConfigManager
(nacos自带的),通过这个bean对象获取线程池配置的配置中心中的dataId groupName
; -
c. 并且向NacosConfigManager中(获取configService)添加自定义的listener,这个自定义的listener通过重写的
receiveConfigInfo()
方法读取nacos中的配置,将读取到的信息(configInfo)塞入properties
中,传递给自定义的线程池manager(dynamicThreadPoolExecutorManager); -
d. 这个自定义的dynamicThreadPoolExecutorManager通过读取
ApplicationContext上下文
获取线程池exector,然后将传递过来的properties(核心线程数,最大线程数,阻塞队列)set到exector中
,从而实现动态更新
评论( 0 )