diff --git a/server/src/main/java/io/dynamic/threadpool/server/controller/ConfigController.java b/server/src/main/java/io/dynamic/threadpool/server/controller/ConfigController.java index 4b4b62d3..db22c023 100644 --- a/server/src/main/java/io/dynamic/threadpool/server/controller/ConfigController.java +++ b/server/src/main/java/io/dynamic/threadpool/server/controller/ConfigController.java @@ -1,14 +1,11 @@ package io.dynamic.threadpool.server.controller; import io.dynamic.threadpool.common.constant.Constants; -import io.dynamic.threadpool.common.toolkit.ContentUtil; import io.dynamic.threadpool.common.web.base.Result; import io.dynamic.threadpool.common.web.base.Results; -import io.dynamic.threadpool.server.event.LocalDataChangeEvent; import io.dynamic.threadpool.server.model.ConfigAllInfo; import io.dynamic.threadpool.server.model.ConfigInfoBase; -import io.dynamic.threadpool.server.service.ConfigChangePublisher; -import io.dynamic.threadpool.server.service.ConfigService; +import io.dynamic.threadpool.server.service.biz.ConfigService; import io.dynamic.threadpool.server.service.ConfigServletInner; import io.dynamic.threadpool.server.toolkit.Md5ConfigUtil; import lombok.SneakyThrows; @@ -47,11 +44,8 @@ public class ConfigController { } @PostMapping - public Result publishConfig(HttpServletRequest request, @RequestBody ConfigAllInfo config) { + public Result publishConfig(@RequestBody ConfigAllInfo config) { configService.insertOrUpdate(config); - ConfigChangePublisher - .notifyConfigChange(new LocalDataChangeEvent(ContentUtil.getGroupKey(config))); - return Results.success(true); } diff --git a/server/src/main/java/io/dynamic/threadpool/server/controller/ItemController.java b/server/src/main/java/io/dynamic/threadpool/server/controller/ItemController.java index 41146608..daf93e54 100644 --- a/server/src/main/java/io/dynamic/threadpool/server/controller/ItemController.java +++ b/server/src/main/java/io/dynamic/threadpool/server/controller/ItemController.java @@ -7,7 +7,7 @@ import io.dynamic.threadpool.common.web.base.Results; import io.dynamic.threadpool.server.model.biz.item.ItemQueryReqDTO; import io.dynamic.threadpool.server.model.biz.item.ItemRespDTO; import io.dynamic.threadpool.server.model.biz.item.ItemSaveReqDTO; -import io.dynamic.threadpool.server.service.ItemService; +import io.dynamic.threadpool.server.service.biz.ItemService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; diff --git a/server/src/main/java/io/dynamic/threadpool/server/controller/TenantController.java b/server/src/main/java/io/dynamic/threadpool/server/controller/TenantController.java index 9a1a4f1a..cd87c78e 100644 --- a/server/src/main/java/io/dynamic/threadpool/server/controller/TenantController.java +++ b/server/src/main/java/io/dynamic/threadpool/server/controller/TenantController.java @@ -8,7 +8,7 @@ import io.dynamic.threadpool.server.model.biz.tenant.TenantQueryReqDTO; import io.dynamic.threadpool.server.model.biz.tenant.TenantRespDTO; import io.dynamic.threadpool.server.model.biz.tenant.TenantSaveReqDTO; import io.dynamic.threadpool.server.model.biz.tenant.TenantUpdateReqDTO; -import io.dynamic.threadpool.server.service.TenantService; +import io.dynamic.threadpool.server.service.biz.TenantService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; diff --git a/server/src/main/java/io/dynamic/threadpool/server/controller/ThreadPoolController.java b/server/src/main/java/io/dynamic/threadpool/server/controller/ThreadPoolController.java new file mode 100644 index 00000000..8f11e474 --- /dev/null +++ b/server/src/main/java/io/dynamic/threadpool/server/controller/ThreadPoolController.java @@ -0,0 +1,43 @@ +package io.dynamic.threadpool.server.controller; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import io.dynamic.threadpool.common.constant.Constants; +import io.dynamic.threadpool.common.web.base.Result; +import io.dynamic.threadpool.common.web.base.Results; +import io.dynamic.threadpool.server.model.biz.threadpool.ThreadPoolQueryReqDTO; +import io.dynamic.threadpool.server.model.biz.threadpool.ThreadPoolRespDTO; +import io.dynamic.threadpool.server.model.biz.threadpool.ThreadPoolSaveOrUpdateReqDTO; +import io.dynamic.threadpool.server.service.biz.ThreadPoolService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +/** + * Thread Pool Controller. + * + * @author chen.ma + * @date 2021/6/30 20:54 + */ +@RestController +@RequestMapping(Constants.BASE_PATH) +public class ThreadPoolController { + + @Autowired + private ThreadPoolService threadPoolService; + + @PostMapping("/thread/pool/query/page") + public Result> queryNameSpacePage(@RequestBody ThreadPoolQueryReqDTO reqDTO) { + return Results.success(threadPoolService.queryThreadPoolPage(reqDTO)); + } + + @PostMapping("/thread/pool/query}") + public Result queryNameSpace(@RequestBody ThreadPoolQueryReqDTO reqDTO) { + return Results.success(threadPoolService.getThreadPool(reqDTO)); + } + + @PostMapping("/thread/pool/save_or_update") + public Result saveOrUpdateThreadPoolConfig(@RequestBody ThreadPoolSaveOrUpdateReqDTO reqDTO) { + threadPoolService.saveOrUpdateThreadPoolConfig(reqDTO); + return Results.success(); + } + +} diff --git a/server/src/main/java/io/dynamic/threadpool/server/model/biz/threadpool/ThreadPoolQueryReqDTO.java b/server/src/main/java/io/dynamic/threadpool/server/model/biz/threadpool/ThreadPoolQueryReqDTO.java new file mode 100644 index 00000000..b4804d91 --- /dev/null +++ b/server/src/main/java/io/dynamic/threadpool/server/model/biz/threadpool/ThreadPoolQueryReqDTO.java @@ -0,0 +1,23 @@ +package io.dynamic.threadpool.server.model.biz.threadpool; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import lombok.Data; + +/** + * Thread Pool Query Req DTO. + * + * @author chen.ma + * @date 2021/6/30 21:22 + */ +@Data +public class ThreadPoolQueryReqDTO extends Page { + + private String tenantId; + + private String itemId; + + private String tpId; + + private String tpName; + +} diff --git a/server/src/main/java/io/dynamic/threadpool/server/model/biz/threadpool/ThreadPoolRespDTO.java b/server/src/main/java/io/dynamic/threadpool/server/model/biz/threadpool/ThreadPoolRespDTO.java new file mode 100644 index 00000000..647aa306 --- /dev/null +++ b/server/src/main/java/io/dynamic/threadpool/server/model/biz/threadpool/ThreadPoolRespDTO.java @@ -0,0 +1,14 @@ +package io.dynamic.threadpool.server.model.biz.threadpool; + +import lombok.Data; + +/** + * Thread Pool Resp DTO. + * + * @author chen.ma + * @date 2021/6/30 21:23 + */ +@Data +public class ThreadPoolRespDTO { + +} diff --git a/server/src/main/java/io/dynamic/threadpool/server/model/biz/threadpool/ThreadPoolSaveOrUpdateReqDTO.java b/server/src/main/java/io/dynamic/threadpool/server/model/biz/threadpool/ThreadPoolSaveOrUpdateReqDTO.java new file mode 100644 index 00000000..e7602431 --- /dev/null +++ b/server/src/main/java/io/dynamic/threadpool/server/model/biz/threadpool/ThreadPoolSaveOrUpdateReqDTO.java @@ -0,0 +1,71 @@ +package io.dynamic.threadpool.server.model.biz.threadpool; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.TableField; +import lombok.Data; + +/** + * Thread Pool Save Or Update Req DTO. + * + * @author chen.ma + * @date 2021/6/30 21:23 + */ +@Data +public class ThreadPoolSaveOrUpdateReqDTO { + + /** + * namespace + */ + private String namespace; + + /** + * TpId + */ + private String tpId; + + /** + * ItemId + */ + private String itemId; + + /** + * 核心线程数 + */ + private Integer coreSize; + + /** + * 最大线程数 + */ + private Integer maxSize; + + /** + * 队列类型 + */ + private Integer queueType; + + /** + * 队列长度 + */ + private Integer capacity; + + /** + * 线程存活时长 + */ + private Integer keepAliveTime; + + /** + * 是否告警 + */ + private Integer isAlarm; + + /** + * 容量告警 + */ + private Integer capacityAlarm; + + /** + * 活跃度告警 + */ + private Integer livenessAlarm; + +} diff --git a/server/src/main/java/io/dynamic/threadpool/server/service/ConfigCacheService.java b/server/src/main/java/io/dynamic/threadpool/server/service/ConfigCacheService.java index f93fa8d8..7e9f9d37 100644 --- a/server/src/main/java/io/dynamic/threadpool/server/service/ConfigCacheService.java +++ b/server/src/main/java/io/dynamic/threadpool/server/service/ConfigCacheService.java @@ -7,6 +7,7 @@ import io.dynamic.threadpool.server.event.LocalDataChangeEvent; import io.dynamic.threadpool.server.model.CacheItem; import io.dynamic.threadpool.server.model.ConfigAllInfo; import io.dynamic.threadpool.server.notify.NotifyCenter; +import io.dynamic.threadpool.server.service.biz.ConfigService; import org.springframework.util.StringUtils; import java.util.Objects; diff --git a/server/src/main/java/io/dynamic/threadpool/server/service/ConfigService.java b/server/src/main/java/io/dynamic/threadpool/server/service/biz/ConfigService.java similarity index 91% rename from server/src/main/java/io/dynamic/threadpool/server/service/ConfigService.java rename to server/src/main/java/io/dynamic/threadpool/server/service/biz/ConfigService.java index 5631c318..109182b5 100644 --- a/server/src/main/java/io/dynamic/threadpool/server/service/ConfigService.java +++ b/server/src/main/java/io/dynamic/threadpool/server/service/biz/ConfigService.java @@ -1,4 +1,4 @@ -package io.dynamic.threadpool.server.service; +package io.dynamic.threadpool.server.service.biz; import io.dynamic.threadpool.server.model.ConfigAllInfo; diff --git a/server/src/main/java/io/dynamic/threadpool/server/service/ItemService.java b/server/src/main/java/io/dynamic/threadpool/server/service/biz/ItemService.java similarity index 95% rename from server/src/main/java/io/dynamic/threadpool/server/service/ItemService.java rename to server/src/main/java/io/dynamic/threadpool/server/service/biz/ItemService.java index 6ae4adfe..9f300b29 100644 --- a/server/src/main/java/io/dynamic/threadpool/server/service/ItemService.java +++ b/server/src/main/java/io/dynamic/threadpool/server/service/biz/ItemService.java @@ -1,4 +1,4 @@ -package io.dynamic.threadpool.server.service; +package io.dynamic.threadpool.server.service.biz; import com.baomidou.mybatisplus.core.metadata.IPage; import io.dynamic.threadpool.server.model.biz.item.ItemQueryReqDTO; diff --git a/server/src/main/java/io/dynamic/threadpool/server/service/TenantService.java b/server/src/main/java/io/dynamic/threadpool/server/service/biz/TenantService.java similarity index 95% rename from server/src/main/java/io/dynamic/threadpool/server/service/TenantService.java rename to server/src/main/java/io/dynamic/threadpool/server/service/biz/TenantService.java index 16bed84a..a50cb412 100644 --- a/server/src/main/java/io/dynamic/threadpool/server/service/TenantService.java +++ b/server/src/main/java/io/dynamic/threadpool/server/service/biz/TenantService.java @@ -1,4 +1,4 @@ -package io.dynamic.threadpool.server.service; +package io.dynamic.threadpool.server.service.biz; import com.baomidou.mybatisplus.core.metadata.IPage; import io.dynamic.threadpool.server.model.biz.tenant.TenantQueryReqDTO; diff --git a/server/src/main/java/io/dynamic/threadpool/server/service/biz/ThreadPoolService.java b/server/src/main/java/io/dynamic/threadpool/server/service/biz/ThreadPoolService.java new file mode 100644 index 00000000..489896f9 --- /dev/null +++ b/server/src/main/java/io/dynamic/threadpool/server/service/biz/ThreadPoolService.java @@ -0,0 +1,39 @@ +package io.dynamic.threadpool.server.service.biz; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import io.dynamic.threadpool.server.model.biz.threadpool.ThreadPoolQueryReqDTO; +import io.dynamic.threadpool.server.model.biz.threadpool.ThreadPoolRespDTO; +import io.dynamic.threadpool.server.model.biz.threadpool.ThreadPoolSaveOrUpdateReqDTO; + +/** + * Thread Pool Service. + * + * @author chen.ma + * @date 2021/6/30 21:26 + */ +public interface ThreadPoolService { + + /** + * 分页查询线程池 + * + * @param reqDTO + * @return + */ + IPage queryThreadPoolPage(ThreadPoolQueryReqDTO reqDTO); + + /** + * 查询线程池配置 + * + * @param reqDTO + * @return + */ + ThreadPoolRespDTO getThreadPool(ThreadPoolQueryReqDTO reqDTO); + + /** + * 新增或修改线程池配置 + * + * @param reqDTO + */ + void saveOrUpdateThreadPoolConfig(ThreadPoolSaveOrUpdateReqDTO reqDTO); + +} diff --git a/server/src/main/java/io/dynamic/threadpool/server/service/impl/ConfigServiceImpl.java b/server/src/main/java/io/dynamic/threadpool/server/service/biz/impl/ConfigServiceImpl.java similarity index 74% rename from server/src/main/java/io/dynamic/threadpool/server/service/impl/ConfigServiceImpl.java rename to server/src/main/java/io/dynamic/threadpool/server/service/biz/impl/ConfigServiceImpl.java index e7e67ecf..0b55caaa 100644 --- a/server/src/main/java/io/dynamic/threadpool/server/service/impl/ConfigServiceImpl.java +++ b/server/src/main/java/io/dynamic/threadpool/server/service/biz/impl/ConfigServiceImpl.java @@ -1,12 +1,16 @@ -package io.dynamic.threadpool.server.service.impl; +package io.dynamic.threadpool.server.service.biz.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.toolkit.SqlHelper; +import io.dynamic.threadpool.common.toolkit.ContentUtil; +import io.dynamic.threadpool.server.event.LocalDataChangeEvent; import io.dynamic.threadpool.server.mapper.ConfigInfoMapper; import io.dynamic.threadpool.server.model.ConfigAllInfo; -import io.dynamic.threadpool.server.service.ConfigService; +import io.dynamic.threadpool.server.service.ConfigChangePublisher; +import io.dynamic.threadpool.server.service.biz.ConfigService; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; @@ -28,9 +32,9 @@ public class ConfigServiceImpl implements ConfigService { @Override public ConfigAllInfo findConfigAllInfo(String tpId, String itemId, String namespace) { LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(ConfigAllInfo.class) - .eq(ConfigAllInfo::getTpId, tpId) - .eq(ConfigAllInfo::getItemId, itemId) - .eq(ConfigAllInfo::getNamespace, namespace); + .eq(!StringUtils.isBlank(tpId), ConfigAllInfo::getTpId, tpId) + .eq(!StringUtils.isBlank(itemId), ConfigAllInfo::getItemId, itemId) + .eq(!StringUtils.isBlank(namespace), ConfigAllInfo::getNamespace, namespace); ConfigAllInfo configAllInfo = configInfoMapper.selectOne(wrapper); return configAllInfo; } @@ -42,6 +46,9 @@ public class ConfigServiceImpl implements ConfigService { } catch (Exception ex) { updateConfigInfo(configAllInfo); } + + ConfigChangePublisher + .notifyConfigChange(new LocalDataChangeEvent(ContentUtil.getGroupKey(configAllInfo))); } private Integer addConfigInfo(ConfigAllInfo config) { diff --git a/server/src/main/java/io/dynamic/threadpool/server/service/impl/ItemServiceImpl.java b/server/src/main/java/io/dynamic/threadpool/server/service/biz/impl/ItemServiceImpl.java similarity index 96% rename from server/src/main/java/io/dynamic/threadpool/server/service/impl/ItemServiceImpl.java rename to server/src/main/java/io/dynamic/threadpool/server/service/biz/impl/ItemServiceImpl.java index 98e51fd9..e8240641 100644 --- a/server/src/main/java/io/dynamic/threadpool/server/service/impl/ItemServiceImpl.java +++ b/server/src/main/java/io/dynamic/threadpool/server/service/biz/impl/ItemServiceImpl.java @@ -1,4 +1,4 @@ -package io.dynamic.threadpool.server.service.impl; +package io.dynamic.threadpool.server.service.biz.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -11,7 +11,7 @@ import io.dynamic.threadpool.server.model.biz.item.ItemQueryReqDTO; import io.dynamic.threadpool.server.model.biz.item.ItemRespDTO; import io.dynamic.threadpool.server.model.biz.item.ItemSaveReqDTO; import io.dynamic.threadpool.server.model.biz.item.ItemUpdateReqDTO; -import io.dynamic.threadpool.server.service.ItemService; +import io.dynamic.threadpool.server.service.biz.ItemService; import io.dynamic.threadpool.server.toolkit.BeanUtil; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; diff --git a/server/src/main/java/io/dynamic/threadpool/server/service/impl/TenantServiceImpl.java b/server/src/main/java/io/dynamic/threadpool/server/service/biz/impl/TenantServiceImpl.java similarity index 95% rename from server/src/main/java/io/dynamic/threadpool/server/service/impl/TenantServiceImpl.java rename to server/src/main/java/io/dynamic/threadpool/server/service/biz/impl/TenantServiceImpl.java index c8d09931..93aac3d3 100644 --- a/server/src/main/java/io/dynamic/threadpool/server/service/impl/TenantServiceImpl.java +++ b/server/src/main/java/io/dynamic/threadpool/server/service/biz/impl/TenantServiceImpl.java @@ -1,4 +1,4 @@ -package io.dynamic.threadpool.server.service.impl; +package io.dynamic.threadpool.server.service.biz.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -15,8 +15,8 @@ import io.dynamic.threadpool.server.model.biz.tenant.TenantQueryReqDTO; import io.dynamic.threadpool.server.model.biz.tenant.TenantRespDTO; import io.dynamic.threadpool.server.model.biz.tenant.TenantSaveReqDTO; import io.dynamic.threadpool.server.model.biz.tenant.TenantUpdateReqDTO; -import io.dynamic.threadpool.server.service.ItemService; -import io.dynamic.threadpool.server.service.TenantService; +import io.dynamic.threadpool.server.service.biz.ItemService; +import io.dynamic.threadpool.server.service.biz.TenantService; import io.dynamic.threadpool.server.toolkit.BeanUtil; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; diff --git a/server/src/main/java/io/dynamic/threadpool/server/service/biz/impl/ThreadPoolServiceImpl.java b/server/src/main/java/io/dynamic/threadpool/server/service/biz/impl/ThreadPoolServiceImpl.java new file mode 100644 index 00000000..3e36513e --- /dev/null +++ b/server/src/main/java/io/dynamic/threadpool/server/service/biz/impl/ThreadPoolServiceImpl.java @@ -0,0 +1,54 @@ +package io.dynamic.threadpool.server.service.biz.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import io.dynamic.threadpool.server.mapper.ConfigInfoMapper; +import io.dynamic.threadpool.server.model.ConfigAllInfo; +import io.dynamic.threadpool.server.model.biz.threadpool.ThreadPoolQueryReqDTO; +import io.dynamic.threadpool.server.model.biz.threadpool.ThreadPoolRespDTO; +import io.dynamic.threadpool.server.model.biz.threadpool.ThreadPoolSaveOrUpdateReqDTO; +import io.dynamic.threadpool.server.service.biz.ConfigService; +import io.dynamic.threadpool.server.service.biz.ThreadPoolService; +import io.dynamic.threadpool.server.toolkit.BeanUtil; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; + +/** + * Thread Pool Service Impl. + * + * @author chen.ma + * @date 2021/6/30 21:26 + */ +@Service +public class ThreadPoolServiceImpl implements ThreadPoolService { + + @Autowired + private ConfigService configService; + + @Resource + private ConfigInfoMapper configInfoMapper; + + @Override + public IPage queryThreadPoolPage(ThreadPoolQueryReqDTO reqDTO) { + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(ConfigAllInfo.class) + .eq(!StringUtils.isBlank(reqDTO.getTenantId()), ConfigAllInfo::getNamespace, reqDTO.getTenantId()) + .eq(!StringUtils.isBlank(reqDTO.getItemId()), ConfigAllInfo::getItemId, reqDTO.getItemId()) + .eq(!StringUtils.isBlank(reqDTO.getTpId()), ConfigAllInfo::getTpId, reqDTO.getTpId()); + return configInfoMapper.selectPage(reqDTO, wrapper).convert(each -> BeanUtil.convert(each, ThreadPoolRespDTO.class)); + } + + @Override + public ThreadPoolRespDTO getThreadPool(ThreadPoolQueryReqDTO reqDTO) { + ConfigAllInfo configAllInfo = configService.findConfigAllInfo(reqDTO.getTpId(), reqDTO.getItemId(), reqDTO.getTenantId()); + return BeanUtil.convert(configAllInfo, ThreadPoolRespDTO.class); + } + + @Override + public void saveOrUpdateThreadPoolConfig(ThreadPoolSaveOrUpdateReqDTO reqDTO) { + configService.insertOrUpdate(BeanUtil.convert(reqDTO, ConfigAllInfo.class)); + } +}