From cce2d9d633295fbbb265f021371605f1f322c29c Mon Sep 17 00:00:00 2001 From: byteblogs168 <598092184@qq.com> Date: Wed, 6 Dec 2023 18:31:22 +0800 Subject: [PATCH] =?UTF-8?q?fix:=202.5.0=201.=20=E6=94=AF=E6=8C=81=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E5=85=B3=E9=97=AD=E5=8F=AF=E4=BB=A5=E6=89=8B=E5=8A=A8?= =?UTF-8?q?=E6=94=AF=E6=8C=81=E4=BB=BB=E5=8A=A1=202.=20=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E5=A4=B1=E8=B4=A5=E7=8A=B6=E6=80=81=E6=B2=A1?= =?UTF-8?q?=E6=9C=89=E7=BB=9F=E8=AE=A1=E9=97=AE=E9=A2=98=203.=20=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D=E9=87=8D=E8=AF=95=E6=A8=A1=E5=9D=97=E7=9C=8B=E6=9D=BF?= =?UTF-8?q?=E6=9B=B4=E6=96=B0=E7=BB=9F=E8=AE=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mysql/mapper/JobTaskBatchMapper.xml | 20 +++++----- .../mysql/mapper/RetrySummaryMapper.xml | 8 ++-- .../common/enums/JobTriggerTypeEnum.java | 40 +++++++++++++++++++ .../job/task/dto/JobTaskPrepareDTO.java | 5 +++ .../server/job/task/dto/JobTimerTaskDTO.java | 4 ++ .../server/job/task/dto/TaskExecuteDTO.java | 4 ++ .../support/dispatch/JobExecutorActor.java | 15 ++++--- .../support/dispatch/ScanJobTaskActor.java | 3 +- .../batch/JobTaskBatchGenerator.java | 1 + .../batch/JobTaskBatchGeneratorContext.java | 5 +++ .../job/task/support/timer/JobTimerTask.java | 1 + .../support/timer/ResidentJobTimerTask.java | 2 + .../web/service/impl/JobServiceImpl.java | 8 ++-- 13 files changed, 91 insertions(+), 25 deletions(-) create mode 100644 easy-retry-server/easy-retry-server-common/src/main/java/com/aizuda/easy/retry/server/common/enums/JobTriggerTypeEnum.java diff --git a/easy-retry-datasource/easy-retry-mysql-datasource/src/main/resources/mysql/mapper/JobTaskBatchMapper.xml b/easy-retry-datasource/easy-retry-mysql-datasource/src/main/resources/mysql/mapper/JobTaskBatchMapper.xml index 431cb4f92..5467639ea 100644 --- a/easy-retry-datasource/easy-retry-mysql-datasource/src/main/resources/mysql/mapper/JobTaskBatchMapper.xml +++ b/easy-retry-datasource/easy-retry-mysql-datasource/src/main/resources/mysql/mapper/JobTaskBatchMapper.xml @@ -40,16 +40,16 @@ () - .eq(Job::getJobStatus, StatusEnum.YES.getStatus()) - .eq(Job::getId, taskExecute.getJobId()) - ); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper(); + // 自动的校验任务必须是开启状态,手动触发无需校验 + if (JobTriggerTypeEnum.AUTO.getType().equals(taskExecute.getTriggerType())) { + queryWrapper.eq(Job::getJobStatus, StatusEnum.YES.getStatus()); + } + + Job job = jobMapper.selectOne(queryWrapper.eq(Job::getId, taskExecute.getJobId())); try { @@ -146,7 +150,7 @@ public class JobExecutorActor extends AbstractActor { } private void doHandlerResidentTask(Job job, TaskExecuteDTO taskExecuteDTO) { - if (Objects.isNull(job)) { + if (Objects.isNull(job) || JobTriggerTypeEnum.MANUAL.getType().equals(taskExecuteDTO.getTriggerType())) { return; } @@ -156,6 +160,7 @@ public class JobExecutorActor extends AbstractActor { JobTimerTaskDTO jobTimerTaskDTO = new JobTimerTaskDTO(); jobTimerTaskDTO.setJobId(taskExecuteDTO.getJobId()); jobTimerTaskDTO.setTaskBatchId(taskExecuteDTO.getTaskBatchId()); + jobTimerTaskDTO.setTriggerType(JobTriggerTypeEnum.AUTO.getType()); ResidentJobTimerTask timerTask = new ResidentJobTimerTask(jobTimerTaskDTO, job); WaitStrategy waitStrategy = WaitStrategies.WaitStrategyEnum.getWaitStrategy(job.getTriggerType()); diff --git a/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/dispatch/ScanJobTaskActor.java b/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/dispatch/ScanJobTaskActor.java index 36b68727e..0514830e8 100644 --- a/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/dispatch/ScanJobTaskActor.java +++ b/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/dispatch/ScanJobTaskActor.java @@ -11,6 +11,7 @@ import com.aizuda.easy.retry.server.common.cache.CacheConsumerGroup; import com.aizuda.easy.retry.server.common.config.SystemProperties; import com.aizuda.easy.retry.server.common.dto.PartitionTask; import com.aizuda.easy.retry.server.common.dto.ScanTask; +import com.aizuda.easy.retry.server.common.enums.JobTriggerTypeEnum; import com.aizuda.easy.retry.server.common.strategy.WaitStrategies; import com.aizuda.easy.retry.server.common.util.DateUtils; import com.aizuda.easy.retry.server.common.util.PartitionTaskUtils; @@ -29,7 +30,6 @@ import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Component; import org.springframework.util.CollectionUtils; -import java.time.LocalDateTime; import java.util.*; @@ -90,6 +90,7 @@ public class ScanJobTaskActor extends AbstractActor { for (final JobTaskPrepareDTO waitExecJob : waitExecJobs) { // 执行预处理阶段 ActorRef actorRef = ActorGenerator.jobTaskPrepareActor(); + waitExecJob.setTriggerType(JobTriggerTypeEnum.AUTO.getType()); actorRef.tell(waitExecJob, actorRef); } } diff --git a/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/generator/batch/JobTaskBatchGenerator.java b/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/generator/batch/JobTaskBatchGenerator.java index 325cc4f30..98eb62d59 100644 --- a/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/generator/batch/JobTaskBatchGenerator.java +++ b/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/generator/batch/JobTaskBatchGenerator.java @@ -64,6 +64,7 @@ public class JobTaskBatchGenerator { JobTimerTaskDTO jobTimerTaskDTO = new JobTimerTaskDTO(); jobTimerTaskDTO.setTaskBatchId(jobTaskBatch.getId()); jobTimerTaskDTO.setJobId(context.getJobId()); + jobTimerTaskDTO.setTriggerType(context.getTriggerType()); JobTimerWheel.register(jobTaskBatch.getId(), new JobTimerTask(jobTimerTaskDTO), delay, TimeUnit.MILLISECONDS); diff --git a/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/generator/batch/JobTaskBatchGeneratorContext.java b/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/generator/batch/JobTaskBatchGeneratorContext.java index 131daeb22..1ff1d1989 100644 --- a/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/generator/batch/JobTaskBatchGeneratorContext.java +++ b/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/generator/batch/JobTaskBatchGeneratorContext.java @@ -40,5 +40,10 @@ public class JobTaskBatchGeneratorContext { */ private Integer taskBatchStatus; + /** + * 触发类似 1、auto 2、manual + */ + private Integer triggerType; + } diff --git a/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/timer/JobTimerTask.java b/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/timer/JobTimerTask.java index b169830ef..c832beeab 100644 --- a/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/timer/JobTimerTask.java +++ b/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/timer/JobTimerTask.java @@ -31,6 +31,7 @@ public class JobTimerTask implements TimerTask { TaskExecuteDTO taskExecuteDTO = new TaskExecuteDTO(); taskExecuteDTO.setTaskBatchId(jobTimerTaskDTO.getTaskBatchId()); taskExecuteDTO.setJobId(jobTimerTaskDTO.getJobId()); + taskExecuteDTO.setTriggerType(jobTimerTaskDTO.getTriggerType()); ActorRef actorRef = ActorGenerator.jobTaskExecutorActor(); actorRef.tell(taskExecuteDTO, actorRef); diff --git a/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/timer/ResidentJobTimerTask.java b/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/timer/ResidentJobTimerTask.java index d60fd8e11..95cfabf85 100644 --- a/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/timer/ResidentJobTimerTask.java +++ b/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/timer/ResidentJobTimerTask.java @@ -2,6 +2,7 @@ package com.aizuda.easy.retry.server.job.task.support.timer; import akka.actor.ActorRef; import com.aizuda.easy.retry.server.common.akka.ActorGenerator; +import com.aizuda.easy.retry.server.common.enums.JobTriggerTypeEnum; import com.aizuda.easy.retry.server.job.task.dto.JobTaskPrepareDTO; import com.aizuda.easy.retry.server.job.task.dto.JobTimerTaskDTO; import com.aizuda.easy.retry.server.job.task.support.JobTaskConverter; @@ -29,6 +30,7 @@ public class ResidentJobTimerTask implements TimerTask { // 清除时间轮的缓存 JobTimerWheel.clearCache(jobTimerTaskDTO.getTaskBatchId()); JobTaskPrepareDTO jobTaskPrepare = JobTaskConverter.INSTANCE.toJobTaskPrepare(job); + jobTaskPrepare.setTriggerType(JobTriggerTypeEnum.AUTO.getType()); // 执行预处理阶段 ActorRef actorRef = ActorGenerator.jobTaskPrepareActor(); actorRef.tell(jobTaskPrepare, actorRef); diff --git a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/impl/JobServiceImpl.java b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/impl/JobServiceImpl.java index 0c593979b..7d0ca62c2 100644 --- a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/impl/JobServiceImpl.java +++ b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/impl/JobServiceImpl.java @@ -6,6 +6,7 @@ import cn.hutool.core.util.StrUtil; import com.aizuda.easy.retry.common.core.enums.StatusEnum; import com.aizuda.easy.retry.server.common.WaitStrategy; import com.aizuda.easy.retry.server.common.config.SystemProperties; +import com.aizuda.easy.retry.server.common.enums.JobTriggerTypeEnum; import com.aizuda.easy.retry.server.common.exception.EasyRetryServerException; import com.aizuda.easy.retry.server.common.strategy.WaitStrategies; import com.aizuda.easy.retry.server.common.util.CronUtils; @@ -22,11 +23,9 @@ import com.aizuda.easy.retry.server.web.model.response.JobResponseVO; import com.aizuda.easy.retry.server.web.service.JobService; import com.aizuda.easy.retry.server.web.service.convert.JobConverter; import com.aizuda.easy.retry.server.web.service.convert.JobResponseVOConverter; -import com.aizuda.easy.retry.server.web.service.convert.SceneConfigResponseVOConverter; import com.aizuda.easy.retry.server.web.util.UserSessionUtils; import com.aizuda.easy.retry.template.datasource.persistence.mapper.JobMapper; import com.aizuda.easy.retry.template.datasource.persistence.po.Job; -import com.aizuda.easy.retry.template.datasource.persistence.po.SceneConfig; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.PageDTO; import lombok.extern.slf4j.Slf4j; @@ -34,8 +33,6 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Service; -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; import java.util.List; import java.util.Objects; import java.util.Optional; @@ -213,6 +210,7 @@ public class JobServiceImpl implements JobService { JobTaskPrepareDTO jobTaskPrepare = JobTaskConverter.INSTANCE.toJobTaskPrepare(job); // 设置now表示立即执行 jobTaskPrepare.setNextTriggerAt(DateUtils.toNowMilli()); + jobTaskPrepare.setTriggerType(JobTriggerTypeEnum.MANUAL.getType()); // 创建批次 jobPrePareHandler.handler(jobTaskPrepare); @@ -230,4 +228,4 @@ public class JobServiceImpl implements JobService { List jobResponseList = JobResponseVOConverter.INSTANCE.toJobResponseVOs(jobs); return jobResponseList; } -} \ No newline at end of file +}