From cf1b785acd8dda698411aa3015db3d5a5c7cb506 Mon Sep 17 00:00:00 2001 From: "chen.ma" Date: Wed, 22 Dec 2021 22:33:52 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E5=96=84=E6=9C=8D=E5=8A=A1=E7=AB=AF?= =?UTF-8?q?=E5=8E=86=E5=8F=B2=E8=BF=90=E8=A1=8C=E6=8C=87=E6=A0=87=E7=9B=91?= =?UTF-8?q?=E6=8E=A7.=20(#15)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../biz/monitor/MonitorActiveRespDTO.java | 5 +++ .../config/service/biz/HisRunDataService.java | 8 ++++ .../biz/impl/HisRunDataServiceImpl.java | 43 +++++++++++++++++-- .../console/controller/MonitorController.java | 6 +++ 4 files changed, 58 insertions(+), 4 deletions(-) diff --git a/hippo4j-config/src/main/java/cn/hippo4j/config/model/biz/monitor/MonitorActiveRespDTO.java b/hippo4j-config/src/main/java/cn/hippo4j/config/model/biz/monitor/MonitorActiveRespDTO.java index 2950736d..1a509bce 100644 --- a/hippo4j-config/src/main/java/cn/hippo4j/config/model/biz/monitor/MonitorActiveRespDTO.java +++ b/hippo4j-config/src/main/java/cn/hippo4j/config/model/biz/monitor/MonitorActiveRespDTO.java @@ -57,4 +57,9 @@ public class MonitorActiveRespDTO { */ private List currentLoadList; + /** + * queueCapacityList + */ + private List queueCapacityList; + } diff --git a/hippo4j-config/src/main/java/cn/hippo4j/config/service/biz/HisRunDataService.java b/hippo4j-config/src/main/java/cn/hippo4j/config/service/biz/HisRunDataService.java index e4e2ef50..c90afb67 100644 --- a/hippo4j-config/src/main/java/cn/hippo4j/config/service/biz/HisRunDataService.java +++ b/hippo4j-config/src/main/java/cn/hippo4j/config/service/biz/HisRunDataService.java @@ -33,6 +33,14 @@ public interface HisRunDataService extends IService { */ MonitorActiveRespDTO queryInfoThreadPoolMonitor(MonitorQueryReqDTO reqDTO); + /** + * Query thread pool last task count. + * + * @param reqDTO + * @return + */ + MonitorRespDTO queryThreadPoolLastTaskCount(MonitorQueryReqDTO reqDTO); + /** * Save. * diff --git a/hippo4j-config/src/main/java/cn/hippo4j/config/service/biz/impl/HisRunDataServiceImpl.java b/hippo4j-config/src/main/java/cn/hippo4j/config/service/biz/impl/HisRunDataServiceImpl.java index c84713ed..6f25dafa 100644 --- a/hippo4j-config/src/main/java/cn/hippo4j/config/service/biz/impl/HisRunDataServiceImpl.java +++ b/hippo4j-config/src/main/java/cn/hippo4j/config/service/biz/impl/HisRunDataServiceImpl.java @@ -20,6 +20,7 @@ import org.springframework.stereotype.Service; import java.util.Date; import java.util.List; +import java.util.concurrent.atomic.AtomicBoolean; import static cn.hutool.core.date.DatePattern.NORM_TIME_PATTERN; @@ -71,25 +72,59 @@ public class HisRunDataServiceImpl extends ServiceImpl times = Lists.newArrayList(); List poolSizeList = Lists.newArrayList(); List activeSizeList = Lists.newArrayList(); + List queueCapacityList = Lists.newArrayList(); List queueSizeList = Lists.newArrayList(); List completedTaskCountList = Lists.newArrayList(); List rejectCountList = Lists.newArrayList(); List queueRemainingCapacityList = Lists.newArrayList(); List currentLoadList = Lists.newArrayList(); - hisRunDataInfos.forEach(each -> { + long countTemp = 0L; + AtomicBoolean firstFlag = new AtomicBoolean(Boolean.TRUE); + for (HisRunDataInfo each : hisRunDataInfos) { String time = DateUtil.format(new Date(each.getTimestamp()), NORM_TIME_PATTERN); times.add(time); poolSizeList.add(each.getPoolSize()); activeSizeList.add(each.getActiveSize()); queueSizeList.add(each.getQueueSize()); - completedTaskCountList.add(each.getCompletedTaskCount()); rejectCountList.add(each.getRejectCount()); queueRemainingCapacityList.add(each.getQueueRemainingCapacity()); currentLoadList.add(each.getCurrentLoad()); - }); + queueCapacityList.add(each.getQueueCapacity()); + + if (firstFlag.get()) { + completedTaskCountList.add(0L); + firstFlag.set(Boolean.FALSE); + countTemp = each.getCompletedTaskCount(); + continue; + } + + long completedTaskCount = each.getCompletedTaskCount(); + long countTask = completedTaskCount - countTemp; + completedTaskCountList.add(countTask); + countTemp = each.getCompletedTaskCount(); + } + + return new MonitorActiveRespDTO(times, poolSizeList, activeSizeList, queueSizeList, completedTaskCountList, rejectCountList, queueRemainingCapacityList, currentLoadList, queueCapacityList); + } + + @Override + public MonitorRespDTO queryThreadPoolLastTaskCount(MonitorQueryReqDTO reqDTO) { + Date currentDate = new Date(); + DateTime dateTime = DateUtil.offsetMinute(currentDate, -properties.getCleanHistoryDataPeriod()); + long startTime = dateTime.getTime(); + + HisRunDataInfo hisRunDataInfo = this.lambdaQuery() + .eq(HisRunDataInfo::getTenantId, reqDTO.getTenantId()) + .eq(HisRunDataInfo::getItemId, reqDTO.getItemId()) + .eq(HisRunDataInfo::getTpId, reqDTO.getTpId()) + .eq(HisRunDataInfo::getInstanceId, reqDTO.getInstanceId()) + .orderByAsc(HisRunDataInfo::getTimestamp) + .between(HisRunDataInfo::getTimestamp, startTime, currentDate.getTime()) + .last("LIMIT 1") + .one(); - return new MonitorActiveRespDTO(times, poolSizeList, activeSizeList, queueSizeList, completedTaskCountList, rejectCountList, queueRemainingCapacityList, currentLoadList); + return BeanUtil.convert(hisRunDataInfo, MonitorRespDTO.class); } @Override diff --git a/hippo4j-console/src/main/java/cn/hippo4j/console/controller/MonitorController.java b/hippo4j-console/src/main/java/cn/hippo4j/console/controller/MonitorController.java index 0c309e32..3ee3198b 100644 --- a/hippo4j-console/src/main/java/cn/hippo4j/console/controller/MonitorController.java +++ b/hippo4j-console/src/main/java/cn/hippo4j/console/controller/MonitorController.java @@ -48,6 +48,12 @@ public class MonitorController { return Results.success(monitorRespList); } + @PostMapping("/last/task/count") + public Result queryThreadPoolLastTaskCount(@RequestBody MonitorQueryReqDTO reqDTO) { + MonitorRespDTO resultDTO = hisRunDataService.queryThreadPoolLastTaskCount(reqDTO); + return Results.success(resultDTO); + } + @PostMapping public Result dataCollect(@RequestBody MessageWrapper messageWrapper) { Runnable task = () -> {