一、前言
最初设计 Hippo4j 的初衷是尽可能提高以及保障线程池对于线上应用的作用,所以加了很多个性化功能,这也间接导致强依赖 Hippo4j Server 项目。
自 Hippo4j 1.0.0 版本发布之后,不断有社区小伙伴提出相同的一个问题,如何能够轻量级使用动态线程池?
这不,它来了。
GitHub:https://github.com/acmenlt/dynamic-threadpool
Gitee:https://gitee.com/acmenlt/dynamic-threadpool
随着 Hippo4j 1.1.0 版本的发布,除了在原有功能进行迭代输出外,额外添加了一种使用模式:依赖配置中心实现的轻量级动态线程池
,将 Hippo4j 的源代码从一种使用模式拆分为两种。
两种模式共用一套核心源代码,保留了基础且大家关注的功能,模块取名为:Hippo4j Core。
二、Hippo4j Core
所谓“一图胜千言”,小编画了一张图,来描述它的交互行为以及所支持功能。
只要你们项目中有配置中心,引用 hippo4j-core-spring-boot-starter
后,就可以使用以上功能啦。
1. 动态线程池参数更新
客户端项目启动时向配置中心请求动态线程池配置,获取配置后创建 DynamicThreadPool
线程池。
并向配置中心发起监听事件,当配置中心中配置发生变更时,监听事件实时修改项目中的线程池参数。
如在配置中心变更了动态线程池配置,会在日志中打印变更信息:
[MESSAGE-CONSUME] Changed thread pool.
coreSize :: [1 => 10]
maxSize :: [1 => 20]
queueType :: [ResizableCapacityLinkedBlockIngQueue => ResizableCapacityLinkedBlockIngQueue]
capacity :: [1024 => 2048]
keepAliveTime :: [1000 => 1000]
executeTimeOut :: [600 => 600]
rejectedType :: [DiscardOldestPolicy => DiscardOldestPolicy]
allowCoreThreadTimeOut :: [false => false]
同时,通过消息推送通知相关负责人。目前通知平台已支持钉钉、企业微信以及飞书三种常用办公软件,以企业微信群聊机器人举例: