From a047a254663b57c2ced326b92ce0d63eb8a91890 Mon Sep 17 00:00:00 2001 From: "chen.ma" Date: Wed, 22 Dec 2021 08:05:21 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E7=BA=BF=E7=A8=8B=E6=B1=A0?= =?UTF-8?q?=E6=A0=B8=E5=BF=83=E7=BA=BF=E7=A8=8B=E8=B6=85=E6=97=B6,=20?= =?UTF-8?q?=E9=87=8D=E6=9E=84=E4=BB=A3=E7=A0=81.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/hippo4j/auth/model/PermissionInfo.java | 2 +- .../java/cn/hippo4j/auth/model/RoleInfo.java | 2 +- .../java/cn/hippo4j/auth/model/UserInfo.java | 2 +- .../cn/hippo4j/common}/enums/DelEnum.java | 2 +- .../cn/hippo4j/common/enums/EnableEnum.java | 46 +++++++++++++++++++ .../hippo4j/common/model/PoolParameter.java | 7 +++ .../common/model/PoolParameterInfo.java | 5 ++ .../hippo4j/common/toolkit/ContentUtil.java | 1 + .../config/config/MyMetaObjectHandler.java | 2 +- .../hippo4j/config/model/ConfigInfoBase.java | 5 ++ .../cn/hippo4j/config/model/NotifyInfo.java | 5 +- .../biz/threadpool/ThreadPoolRespDTO.java | 5 ++ .../ThreadPoolSaveOrUpdateReqDTO.java | 5 ++ .../service/biz/impl/ItemServiceImpl.java | 4 +- .../service/biz/impl/NotifyServiceImpl.java | 4 +- .../service/biz/impl/TenantServiceImpl.java | 4 +- .../biz/impl/ThreadPoolServiceImpl.java | 2 +- .../service/impl/DashboardServiceImpl.java | 2 +- hippo4j-server/conf/hippo4j_manager.sql | 21 +++++---- .../core/DynamicThreadPoolPostProcessor.java | 2 + .../core/ThreadPoolDynamicRefresh.java | 13 +++++- .../toolkit/thread/ThreadPoolBuilder.java | 4 +- 22 files changed, 115 insertions(+), 30 deletions(-) rename {hippo4j-config/src/main/java/cn/hippo4j/config => hippo4j-common/src/main/java/cn/hippo4j/common}/enums/DelEnum.java (94%) create mode 100644 hippo4j-common/src/main/java/cn/hippo4j/common/enums/EnableEnum.java diff --git a/hippo4j-auth/src/main/java/cn/hippo4j/auth/model/PermissionInfo.java b/hippo4j-auth/src/main/java/cn/hippo4j/auth/model/PermissionInfo.java index 79fe8926..2c8faaaa 100644 --- a/hippo4j-auth/src/main/java/cn/hippo4j/auth/model/PermissionInfo.java +++ b/hippo4j-auth/src/main/java/cn/hippo4j/auth/model/PermissionInfo.java @@ -18,7 +18,7 @@ public class PermissionInfo { /** * id */ - @TableId + @TableId(type = IdType.AUTO) private Long id; /** diff --git a/hippo4j-auth/src/main/java/cn/hippo4j/auth/model/RoleInfo.java b/hippo4j-auth/src/main/java/cn/hippo4j/auth/model/RoleInfo.java index 27af8e83..f3bca4a4 100644 --- a/hippo4j-auth/src/main/java/cn/hippo4j/auth/model/RoleInfo.java +++ b/hippo4j-auth/src/main/java/cn/hippo4j/auth/model/RoleInfo.java @@ -18,7 +18,7 @@ public class RoleInfo { /** * id */ - @TableId + @TableId(type = IdType.AUTO) private Long id; /** diff --git a/hippo4j-auth/src/main/java/cn/hippo4j/auth/model/UserInfo.java b/hippo4j-auth/src/main/java/cn/hippo4j/auth/model/UserInfo.java index 2375172a..0c4cba74 100644 --- a/hippo4j-auth/src/main/java/cn/hippo4j/auth/model/UserInfo.java +++ b/hippo4j-auth/src/main/java/cn/hippo4j/auth/model/UserInfo.java @@ -18,7 +18,7 @@ public class UserInfo { /** * id */ - @TableId + @TableId(type = IdType.AUTO) private Long id; /** diff --git a/hippo4j-config/src/main/java/cn/hippo4j/config/enums/DelEnum.java b/hippo4j-common/src/main/java/cn/hippo4j/common/enums/DelEnum.java similarity index 94% rename from hippo4j-config/src/main/java/cn/hippo4j/config/enums/DelEnum.java rename to hippo4j-common/src/main/java/cn/hippo4j/common/enums/DelEnum.java index df1af116..7e6848c7 100644 --- a/hippo4j-config/src/main/java/cn/hippo4j/config/enums/DelEnum.java +++ b/hippo4j-common/src/main/java/cn/hippo4j/common/enums/DelEnum.java @@ -1,4 +1,4 @@ -package cn.hippo4j.config.enums; +package cn.hippo4j.common.enums; /** * Del enum. diff --git a/hippo4j-common/src/main/java/cn/hippo4j/common/enums/EnableEnum.java b/hippo4j-common/src/main/java/cn/hippo4j/common/enums/EnableEnum.java new file mode 100644 index 00000000..81c1b1c4 --- /dev/null +++ b/hippo4j-common/src/main/java/cn/hippo4j/common/enums/EnableEnum.java @@ -0,0 +1,46 @@ +package cn.hippo4j.common.enums; + +import java.util.Objects; + +/** + * Enable enum. + * + * @author chen.ma + * @date 2021/12/21 20:34 + */ +public enum EnableEnum { + + /** + * True. + */ + YES("1"), + + /** + * False. + */ + NO("0"); + + private final String statusCode; + + EnableEnum(String statusCode) { + this.statusCode = statusCode; + } + + public String getCode() { + return this.statusCode; + } + + public Integer getIntCode() { + return Integer.parseInt(this.statusCode); + } + + @Override + public String toString() { + return statusCode; + } + + public static boolean getBool(Integer intStatusCode) { + return Objects.equals(intStatusCode, EnableEnum.YES.getIntCode()) ? true : false; + } + +} diff --git a/hippo4j-common/src/main/java/cn/hippo4j/common/model/PoolParameter.java b/hippo4j-common/src/main/java/cn/hippo4j/common/model/PoolParameter.java index e90cddc6..c21e380d 100644 --- a/hippo4j-common/src/main/java/cn/hippo4j/common/model/PoolParameter.java +++ b/hippo4j-common/src/main/java/cn/hippo4j/common/model/PoolParameter.java @@ -92,4 +92,11 @@ public interface PoolParameter { */ Integer getLivenessAlarm(); + /** + * allowCoreThreadTimeOut + * + * @return + */ + Integer getAllowCoreThreadTimeOut(); + } diff --git a/hippo4j-common/src/main/java/cn/hippo4j/common/model/PoolParameterInfo.java b/hippo4j-common/src/main/java/cn/hippo4j/common/model/PoolParameterInfo.java index de9d4a15..5eaf0020 100644 --- a/hippo4j-common/src/main/java/cn/hippo4j/common/model/PoolParameterInfo.java +++ b/hippo4j-common/src/main/java/cn/hippo4j/common/model/PoolParameterInfo.java @@ -82,4 +82,9 @@ public class PoolParameterInfo implements PoolParameter, Serializable { */ private Integer livenessAlarm; + /** + * allowCoreThreadTimeOut + */ + private Integer allowCoreThreadTimeOut; + } diff --git a/hippo4j-common/src/main/java/cn/hippo4j/common/toolkit/ContentUtil.java b/hippo4j-common/src/main/java/cn/hippo4j/common/toolkit/ContentUtil.java index 32b76149..4120ca56 100644 --- a/hippo4j-common/src/main/java/cn/hippo4j/common/toolkit/ContentUtil.java +++ b/hippo4j-common/src/main/java/cn/hippo4j/common/toolkit/ContentUtil.java @@ -25,6 +25,7 @@ public class ContentUtil { .setIsAlarm(parameter.getIsAlarm()) .setCapacityAlarm(parameter.getCapacityAlarm()) .setLivenessAlarm(parameter.getLivenessAlarm()) + .setAllowCoreThreadTimeOut(parameter.getAllowCoreThreadTimeOut()) .setRejectedType(parameter.getRejectedType()); return JSONUtil.toJSONString(poolInfo); } diff --git a/hippo4j-config/src/main/java/cn/hippo4j/config/config/MyMetaObjectHandler.java b/hippo4j-config/src/main/java/cn/hippo4j/config/config/MyMetaObjectHandler.java index 8f28c75c..bbecb097 100644 --- a/hippo4j-config/src/main/java/cn/hippo4j/config/config/MyMetaObjectHandler.java +++ b/hippo4j-config/src/main/java/cn/hippo4j/config/config/MyMetaObjectHandler.java @@ -1,6 +1,6 @@ package cn.hippo4j.config.config; -import cn.hippo4j.config.enums.DelEnum; +import cn.hippo4j.common.enums.DelEnum; import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler; import lombok.extern.slf4j.Slf4j; import org.apache.ibatis.reflection.MetaObject; diff --git a/hippo4j-config/src/main/java/cn/hippo4j/config/model/ConfigInfoBase.java b/hippo4j-config/src/main/java/cn/hippo4j/config/model/ConfigInfoBase.java index 54181bb5..f52eaecb 100644 --- a/hippo4j-config/src/main/java/cn/hippo4j/config/model/ConfigInfoBase.java +++ b/hippo4j-config/src/main/java/cn/hippo4j/config/model/ConfigInfoBase.java @@ -84,6 +84,11 @@ public class ConfigInfoBase implements Serializable { */ private Integer livenessAlarm; + /** + * allowCoreThreadTimeOut + */ + private Integer allowCoreThreadTimeOut; + /** * MD5 */ diff --git a/hippo4j-config/src/main/java/cn/hippo4j/config/model/NotifyInfo.java b/hippo4j-config/src/main/java/cn/hippo4j/config/model/NotifyInfo.java index 0fde98f0..69ef6912 100644 --- a/hippo4j-config/src/main/java/cn/hippo4j/config/model/NotifyInfo.java +++ b/hippo4j-config/src/main/java/cn/hippo4j/config/model/NotifyInfo.java @@ -1,8 +1,6 @@ package cn.hippo4j.config.model; -import com.baomidou.mybatisplus.annotation.FieldFill; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.*; import lombok.Data; import java.util.Date; @@ -20,6 +18,7 @@ public class NotifyInfo { /** * id */ + @TableId(type = IdType.AUTO) private Long id; /** diff --git a/hippo4j-config/src/main/java/cn/hippo4j/config/model/biz/threadpool/ThreadPoolRespDTO.java b/hippo4j-config/src/main/java/cn/hippo4j/config/model/biz/threadpool/ThreadPoolRespDTO.java index 3c564e4f..031c4745 100644 --- a/hippo4j-config/src/main/java/cn/hippo4j/config/model/biz/threadpool/ThreadPoolRespDTO.java +++ b/hippo4j-config/src/main/java/cn/hippo4j/config/model/biz/threadpool/ThreadPoolRespDTO.java @@ -84,6 +84,11 @@ public class ThreadPoolRespDTO { */ private Integer rejectedType; + /** + * allowCoreThreadTimeOut + */ + private Integer allowCoreThreadTimeOut; + /** * gmtCreate */ diff --git a/hippo4j-config/src/main/java/cn/hippo4j/config/model/biz/threadpool/ThreadPoolSaveOrUpdateReqDTO.java b/hippo4j-config/src/main/java/cn/hippo4j/config/model/biz/threadpool/ThreadPoolSaveOrUpdateReqDTO.java index f54c9330..da08b6dc 100644 --- a/hippo4j-config/src/main/java/cn/hippo4j/config/model/biz/threadpool/ThreadPoolSaveOrUpdateReqDTO.java +++ b/hippo4j-config/src/main/java/cn/hippo4j/config/model/biz/threadpool/ThreadPoolSaveOrUpdateReqDTO.java @@ -71,4 +71,9 @@ public class ThreadPoolSaveOrUpdateReqDTO { */ private Integer rejectedType; + /** + * allowCoreThreadTimeOut + */ + private Integer allowCoreThreadTimeOut; + } diff --git a/hippo4j-config/src/main/java/cn/hippo4j/config/service/biz/impl/ItemServiceImpl.java b/hippo4j-config/src/main/java/cn/hippo4j/config/service/biz/impl/ItemServiceImpl.java index 1ae40ff2..71c9d3c7 100644 --- a/hippo4j-config/src/main/java/cn/hippo4j/config/service/biz/impl/ItemServiceImpl.java +++ b/hippo4j-config/src/main/java/cn/hippo4j/config/service/biz/impl/ItemServiceImpl.java @@ -1,7 +1,7 @@ package cn.hippo4j.config.service.biz.impl; import cn.hippo4j.common.toolkit.Assert; -import cn.hippo4j.config.enums.DelEnum; +import cn.hippo4j.common.enums.DelEnum; import cn.hippo4j.config.mapper.ItemInfoMapper; import cn.hippo4j.config.model.ItemInfo; import cn.hippo4j.config.model.biz.item.ItemQueryReqDTO; @@ -107,7 +107,7 @@ public class ItemServiceImpl implements ItemService { public void deleteItem(String namespace, String itemId) { List itemList = threadPoolService.getThreadPoolByItemId(itemId); if (CollectionUtils.isNotEmpty(itemList)) { - throw new RuntimeException("The project contains a thread pool reference, and the deletion failed."); + throw new RuntimeException("项目包含线程池引用, 删除失败."); } int updateResult = itemInfoMapper.update(new ItemInfo(), diff --git a/hippo4j-config/src/main/java/cn/hippo4j/config/service/biz/impl/NotifyServiceImpl.java b/hippo4j-config/src/main/java/cn/hippo4j/config/service/biz/impl/NotifyServiceImpl.java index c48d5644..4a9d405f 100644 --- a/hippo4j-config/src/main/java/cn/hippo4j/config/service/biz/impl/NotifyServiceImpl.java +++ b/hippo4j-config/src/main/java/cn/hippo4j/config/service/biz/impl/NotifyServiceImpl.java @@ -2,7 +2,7 @@ package cn.hippo4j.config.service.biz.impl; import cn.hippo4j.common.toolkit.GroupKey; import cn.hippo4j.common.web.exception.ServiceException; -import cn.hippo4j.config.enums.DelEnum; +import cn.hippo4j.common.enums.EnableEnum; import cn.hippo4j.config.mapper.NotifyInfoMapper; import cn.hippo4j.config.model.NotifyInfo; import cn.hippo4j.config.model.biz.notify.NotifyListRespDTO; @@ -110,7 +110,7 @@ public class NotifyServiceImpl implements NotifyService { .eq(NotifyInfo::getTenantId, parseKey[2]) .eq(NotifyInfo::getItemId, parseKey[1]) .eq(NotifyInfo::getTpId, parseKey[0]) - .eq(NotifyInfo::getEnable, DelEnum.NORMAL) + .eq(NotifyInfo::getEnable, EnableEnum.YES.getIntCode()) .eq(NotifyInfo::getType, type); List notifyInfos = notifyInfoMapper.selectList(queryWrapper); return notifyInfos; diff --git a/hippo4j-config/src/main/java/cn/hippo4j/config/service/biz/impl/TenantServiceImpl.java b/hippo4j-config/src/main/java/cn/hippo4j/config/service/biz/impl/TenantServiceImpl.java index 2d446ffc..6f1b3e16 100644 --- a/hippo4j-config/src/main/java/cn/hippo4j/config/service/biz/impl/TenantServiceImpl.java +++ b/hippo4j-config/src/main/java/cn/hippo4j/config/service/biz/impl/TenantServiceImpl.java @@ -1,7 +1,7 @@ package cn.hippo4j.config.service.biz.impl; import cn.hippo4j.common.toolkit.Assert; -import cn.hippo4j.config.enums.DelEnum; +import cn.hippo4j.common.enums.DelEnum; import cn.hippo4j.config.mapper.TenantInfoMapper; import cn.hippo4j.config.model.TenantInfo; import cn.hippo4j.config.model.biz.item.ItemQueryReqDTO; @@ -108,7 +108,7 @@ public class TenantServiceImpl implements TenantService { reqDTO.setTenantId(tenantId); List itemList = itemService.queryItem(reqDTO); if (CollectionUtils.isNotEmpty(itemList)) { - throw new RuntimeException("The line of business contains project references, and the deletion failed."); + throw new RuntimeException("租户包含项目引用, 删除失败."); } int updateResult = tenantInfoMapper.update(new TenantInfo(), diff --git a/hippo4j-config/src/main/java/cn/hippo4j/config/service/biz/impl/ThreadPoolServiceImpl.java b/hippo4j-config/src/main/java/cn/hippo4j/config/service/biz/impl/ThreadPoolServiceImpl.java index 0ff504ba..01a13017 100644 --- a/hippo4j-config/src/main/java/cn/hippo4j/config/service/biz/impl/ThreadPoolServiceImpl.java +++ b/hippo4j-config/src/main/java/cn/hippo4j/config/service/biz/impl/ThreadPoolServiceImpl.java @@ -1,6 +1,6 @@ package cn.hippo4j.config.service.biz.impl; -import cn.hippo4j.config.enums.DelEnum; +import cn.hippo4j.common.enums.DelEnum; import cn.hippo4j.config.mapper.ConfigInfoMapper; import cn.hippo4j.config.model.ConfigAllInfo; import cn.hippo4j.config.model.biz.threadpool.ThreadPoolDelReqDTO; diff --git a/hippo4j-console/src/main/java/cn/hippo4j/console/service/impl/DashboardServiceImpl.java b/hippo4j-console/src/main/java/cn/hippo4j/console/service/impl/DashboardServiceImpl.java index f0013d62..f43e1554 100644 --- a/hippo4j-console/src/main/java/cn/hippo4j/console/service/impl/DashboardServiceImpl.java +++ b/hippo4j-console/src/main/java/cn/hippo4j/console/service/impl/DashboardServiceImpl.java @@ -2,7 +2,7 @@ package cn.hippo4j.console.service.impl; import cn.hippo4j.common.model.InstanceInfo; import cn.hippo4j.common.toolkit.GroupKey; -import cn.hippo4j.config.enums.DelEnum; +import cn.hippo4j.common.enums.DelEnum; import cn.hippo4j.config.mapper.ConfigInfoMapper; import cn.hippo4j.config.mapper.HisRunDataMapper; import cn.hippo4j.config.mapper.ItemInfoMapper; diff --git a/hippo4j-server/conf/hippo4j_manager.sql b/hippo4j-server/conf/hippo4j_manager.sql index 983fe8bc..9148df68 100644 --- a/hippo4j-server/conf/hippo4j_manager.sql +++ b/hippo4j-server/conf/hippo4j_manager.sql @@ -58,9 +58,10 @@ CREATE TABLE `config` ( `capacity` int(11) DEFAULT NULL COMMENT '队列大小', `rejected_type` int(11) DEFAULT NULL COMMENT '拒绝策略', `keep_alive_time` int(11) DEFAULT NULL COMMENT '线程存活时间', + `allow_core_thread_time_out` tinyint(1) DEFAULT NULL COMMENT '允许核心线程超时', `content` longtext COMMENT '线程池内容', `md5` varchar(32) NOT NULL COMMENT 'MD5', - `is_alarm` tinyint(1) DEFAULT NULL COMMENT '是否报警 0:报警 1:不报警', + `is_alarm` tinyint(1) DEFAULT NULL COMMENT '是否报警', `capacity_alarm` int(11) DEFAULT NULL COMMENT '容量报警', `liveness_alarm` int(11) DEFAULT NULL COMMENT '活跃度报警', `gmt_create` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', @@ -145,7 +146,7 @@ CREATE TABLE `log_record_info` ( /******************************************/ DROP TABLE IF EXISTS `user`; CREATE TABLE `user` ( - `id` bigint(20) NOT NULL COMMENT 'ID', + `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID', `user_name` varchar(64) NOT NULL COMMENT '用户名', `password` varchar(512) NOT NULL COMMENT '用户密码', `role` varchar(50) NOT NULL COMMENT '角色', @@ -153,7 +154,7 @@ CREATE TABLE `user` ( `gmt_modified` datetime NOT NULL COMMENT '修改时间', `del_flag` tinyint(1) NOT NULL COMMENT '是否删除', PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户表'; +) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='用户表'; /******************************************/ /* 数据库全名 = hippo4j_manager */ @@ -161,14 +162,14 @@ CREATE TABLE `user` ( /******************************************/ DROP TABLE IF EXISTS `role`; CREATE TABLE `role` ( - `id` bigint(20) NOT NULL COMMENT 'ID', + `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID', `role` varchar(64) NOT NULL COMMENT '角色', `user_name` varchar(64) NOT NULL COMMENT '用户名', `gmt_create` datetime NOT NULL COMMENT '创建时间', `gmt_modified` datetime NOT NULL COMMENT '修改时间', `del_flag` tinyint(1) NOT NULL COMMENT '是否删除', PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='角色表'; +) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='角色表'; /******************************************/ /* 数据库全名 = hippo4j_manager */ @@ -176,7 +177,7 @@ CREATE TABLE `role` ( /******************************************/ DROP TABLE IF EXISTS `permission`; CREATE TABLE `permission` ( - `id` bigint(20) NOT NULL COMMENT 'ID', + `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID', `role` varchar(512) NOT NULL COMMENT '角色', `resource` varchar(512) NOT NULL COMMENT '资源', `action` varchar(8) NOT NULL COMMENT '读写权限', @@ -184,7 +185,7 @@ CREATE TABLE `permission` ( `gmt_modified` datetime NOT NULL COMMENT '修改时间', `del_flag` tinyint(1) NOT NULL COMMENT '是否删除', PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='权限表'; +) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='权限表'; /******************************************/ /* 数据库全名 = hippo4j_manager */ @@ -207,7 +208,7 @@ CREATE TABLE `notify` ( `del_flag` tinyint(1) NOT NULL COMMENT '是否删除', PRIMARY KEY (`id`), UNIQUE KEY `uk_notify_biz_key` (`tenant_id`,`item_id`,`tp_id`,`platform`,`type`,`del_flag`) USING BTREE -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='通知表'; +) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='通知表'; /* 租户 */ INSERT INTO `tenant` (`id`, `tenant_id`, `tenant_name`, `tenant_desc`, `owner`, `gmt_create`, `gmt_modified`, `del_flag`) VALUES ('1', 'prescription', '处方组', '负责维护处方服务, 包括不限于电子处方等业务', '谢良辰', '2021-10-24 13:42:11', '2021-10-24 13:42:11', '0'); @@ -223,5 +224,5 @@ INSERT INTO `config` (`id`, `tenant_id`, `item_id`, `tp_id`, `tp_name`, `core_si INSERT INTO `user` (`id`, `user_name`, `password`, `role`, `gmt_create`, `gmt_modified`, `del_flag`) VALUES ('1', 'admin', '$2a$10$2KCqRbra0Yn2TwvkZxtfLuWuUP5KyCWsljO/ci5pLD27pqR3TV1vy', 'ROLE_ADMIN', '2021-11-04 21:35:17', '2021-11-15 23:04:59', '0'); /* 通知表 */ -INSERT INTO `notify` (`id`, `tenant_id`, `item_id`, `tp_id`, `platform`, `type`, `secret_key`, `interval`, `receives`, `enable`, `gmt_create`, `gmt_modified`, `del_flag`) VALUES ('1461345908531671042', 'prescription', 'dynamic-threadpool-example', 'message-produce', 'DING', 'CONFIG', '4a582a588a161d6e3a1bd1de7eea9ee9f562cdfcbe56b6e72029e7fd512b2eae', NULL, '15601166691', '0', '2021-11-18 22:49:50', '2021-11-18 22:49:50', '0'), -('1461345976047382530', 'prescription', 'dynamic-threadpool-example', 'message-produce', 'DING', 'ALARM', '4a582a588a161d6e3a1bd1de7eea9ee9f562cdfcbe56b6e72029e7fd512b2eae', '30', '15601166691', '0', '2021-11-18 22:50:06', '2021-11-18 22:50:06', '0'); +INSERT INTO `notify` (`id`, `tenant_id`, `item_id`, `tp_id`, `platform`, `type`, `secret_key`, `interval`, `receives`, `enable`, `gmt_create`, `gmt_modified`, `del_flag`) VALUES ('1', 'prescription', 'dynamic-threadpool-example', 'message-produce', 'DING', 'CONFIG', '4a582a588a161d6e3a1bd1de7eea9ee9f562cdfcbe56b6e72029e7fd512b2eae', NULL, '15601166691', '0', '2021-11-18 22:49:50', '2021-11-18 22:49:50', '0'), +('2', 'prescription', 'dynamic-threadpool-example', 'message-produce', 'DING', 'ALARM', '4a582a588a161d6e3a1bd1de7eea9ee9f562cdfcbe56b6e72029e7fd512b2eae', '30', '15601166691', '0', '2021-11-18 22:50:06', '2021-11-18 22:50:06', '0'); diff --git a/hippo4j-spring-boot-starter/src/main/java/cn/hippo4j/starter/core/DynamicThreadPoolPostProcessor.java b/hippo4j-spring-boot-starter/src/main/java/cn/hippo4j/starter/core/DynamicThreadPoolPostProcessor.java index 455c9c8e..8fe599a8 100644 --- a/hippo4j-spring-boot-starter/src/main/java/cn/hippo4j/starter/core/DynamicThreadPoolPostProcessor.java +++ b/hippo4j-spring-boot-starter/src/main/java/cn/hippo4j/starter/core/DynamicThreadPoolPostProcessor.java @@ -2,6 +2,7 @@ package cn.hippo4j.starter.core; import cn.hippo4j.common.config.ApplicationContextHolder; import cn.hippo4j.common.constant.Constants; +import cn.hippo4j.common.enums.EnableEnum; import cn.hippo4j.common.model.PoolParameterInfo; import cn.hippo4j.common.toolkit.JSONUtil; import cn.hippo4j.common.web.base.Result; @@ -121,6 +122,7 @@ public final class DynamicThreadPoolPostProcessor implements BeanPostProcessor { .keepAliveTime(ppi.getKeepAliveTime(), TimeUnit.SECONDS) .rejected(RejectedTypeEnum.createPolicy(ppi.getRejectedType())) .alarmConfig(ppi.getIsAlarm(), ppi.getCapacityAlarm(), ppi.getLivenessAlarm()) + .allowCoreThreadTimeOut(EnableEnum.getBool(ppi.getAllowCoreThreadTimeOut())) .build(); if (poolExecutor instanceof DynamicExecutorConfigurationSupport) { diff --git a/hippo4j-spring-boot-starter/src/main/java/cn/hippo4j/starter/core/ThreadPoolDynamicRefresh.java b/hippo4j-spring-boot-starter/src/main/java/cn/hippo4j/starter/core/ThreadPoolDynamicRefresh.java index 40911f78..5ceae652 100644 --- a/hippo4j-spring-boot-starter/src/main/java/cn/hippo4j/starter/core/ThreadPoolDynamicRefresh.java +++ b/hippo4j-spring-boot-starter/src/main/java/cn/hippo4j/starter/core/ThreadPoolDynamicRefresh.java @@ -1,5 +1,6 @@ package cn.hippo4j.starter.core; +import cn.hippo4j.common.enums.EnableEnum; import cn.hippo4j.common.model.PoolParameterInfo; import cn.hippo4j.common.toolkit.JSONUtil; import cn.hippo4j.starter.alarm.ThreadPoolAlarmManage; @@ -37,11 +38,13 @@ public class ThreadPoolDynamicRefresh { int originalCapacity = executor.getQueue().remainingCapacity() + executor.getQueue().size(); long originalKeepAliveTime = executor.getKeepAliveTime(TimeUnit.SECONDS); String originalRejected = executor.getRejectedExecutionHandler().getClass().getSimpleName(); + boolean originalAllowCoreThreadTimeOut = executor.allowsCoreThreadTimeOut(); changePoolInfo(executor, parameter); ThreadPoolExecutor afterExecutor = GlobalThreadPoolManage.getExecutorService(threadPoolId).getExecutor(); - log.info("[🔥 {}] Changed thread pool. \ncoreSize :: [{}], maxSize :: [{}], queueType :: [{}], capacity :: [{}], keepAliveTime :: [{}], rejectedType :: [{}]", + log.info( + "[🔥 {}] Changed thread pool. \ncoreSize :: [{}], maxSize :: [{}], queueType :: [{}], capacity :: [{}], keepAliveTime :: [{}], rejectedType :: [{}], allowCoreThreadTimeOut :: [{}]", threadPoolId.toUpperCase(), String.format("%s => %s", originalCoreSize, afterExecutor.getCorePoolSize()), String.format("%s => %s", originalMaximumPoolSize, afterExecutor.getMaximumPoolSize()), @@ -49,7 +52,9 @@ public class ThreadPoolDynamicRefresh { String.format("%s => %s", originalCapacity, (afterExecutor.getQueue().remainingCapacity() + afterExecutor.getQueue().size())), String.format("%s => %s", originalKeepAliveTime, afterExecutor.getKeepAliveTime(TimeUnit.SECONDS)), - String.format("%s => %s", originalRejected, RejectedTypeEnum.getRejectedNameByType(parameter.getRejectedType()))); + String.format("%s => %s", originalRejected, RejectedTypeEnum.getRejectedNameByType(parameter.getRejectedType())), + String.format("%s => %s", originalAllowCoreThreadTimeOut, EnableEnum.getBool(parameter.getAllowCoreThreadTimeOut())) + ); } public static void changePoolInfo(ThreadPoolExecutor executor, PoolParameterInfo parameter) { @@ -78,6 +83,10 @@ public class ThreadPoolDynamicRefresh { if (parameter.getRejectedType() != null) { executor.setRejectedExecutionHandler(RejectedTypeEnum.createPolicy(parameter.getRejectedType())); } + + if (parameter.getAllowCoreThreadTimeOut() != null) { + executor.allowCoreThreadTimeOut(EnableEnum.getBool(parameter.getAllowCoreThreadTimeOut())); + } } } diff --git a/hippo4j-spring-boot-starter/src/main/java/cn/hippo4j/starter/toolkit/thread/ThreadPoolBuilder.java b/hippo4j-spring-boot-starter/src/main/java/cn/hippo4j/starter/toolkit/thread/ThreadPoolBuilder.java index 91943e28..2115f9df 100644 --- a/hippo4j-spring-boot-starter/src/main/java/cn/hippo4j/starter/toolkit/thread/ThreadPoolBuilder.java +++ b/hippo4j-spring-boot-starter/src/main/java/cn/hippo4j/starter/toolkit/thread/ThreadPoolBuilder.java @@ -1,6 +1,6 @@ package cn.hippo4j.starter.toolkit.thread; - +import cn.hippo4j.common.enums.EnableEnum; import cn.hippo4j.common.toolkit.Assert; import cn.hippo4j.starter.alarm.ThreadPoolAlarm; import org.springframework.core.task.TaskDecorator; @@ -212,7 +212,7 @@ public class ThreadPoolBuilder implements Builder { } public ThreadPoolBuilder alarmConfig(int isAlarm, int capacityAlarm, int livenessAlarm) { - this.isAlarm = isAlarm == 0 ? true : false; + this.isAlarm = isAlarm == EnableEnum.YES.getIntCode() ? true : false; this.capacityAlarm = capacityAlarm; this.livenessAlarm = livenessAlarm; return this;