feat: 2.4.0

1. 调整覆盖任务执行顺序
This commit is contained in:
byteblogs168 2023-10-27 09:24:12 +08:00
parent 67a34219ae
commit 9218354d67
3 changed files with 8 additions and 6 deletions

View File

@ -58,6 +58,7 @@ public class RunningJobPrepareHandler extends AbstractJobPrePareHandler {
if (prepare.isOnlyTimeoutCheck()) { if (prepare.isOnlyTimeoutCheck()) {
return; return;
} }
BlockStrategies.BlockStrategyContext blockStrategyContext = JobTaskConverter.INSTANCE.toBlockStrategyContext(prepare); BlockStrategies.BlockStrategyContext blockStrategyContext = JobTaskConverter.INSTANCE.toBlockStrategyContext(prepare);
blockStrategyContext.setOperationReason(jobOperationReasonEnum); blockStrategyContext.setOperationReason(jobOperationReasonEnum);
BlockStrategy blockStrategyInterface = BlockStrategies.BlockStrategyEnum.getBlockStrategy(blockStrategy); BlockStrategy blockStrategyInterface = BlockStrategies.BlockStrategyEnum.getBlockStrategy(blockStrategy);

View File

@ -83,6 +83,11 @@ public class BlockStrategies {
public void block(final BlockStrategyContext context) { public void block(final BlockStrategyContext context) {
log.warn("阻塞策略为覆盖. taskBatchId:[{}]", context.getTaskBatchId()); log.warn("阻塞策略为覆盖. taskBatchId:[{}]", context.getTaskBatchId());
// 重新生成任务
JobTaskBatchGenerator jobTaskBatchGenerator = SpringContext.getBeanByType(JobTaskBatchGenerator.class);
JobTaskBatchGeneratorContext jobTaskBatchGeneratorContext = JobTaskConverter.INSTANCE.toJobTaskGeneratorContext(context);
jobTaskBatchGenerator.generateJobTaskBatch(jobTaskBatchGeneratorContext);
// 停止任务 // 停止任务
JobTaskStopHandler instanceInterrupt = JobTaskStopFactory.getJobTaskStop(context.taskType); JobTaskStopHandler instanceInterrupt = JobTaskStopFactory.getJobTaskStop(context.taskType);
TaskStopJobContext stopJobContext = JobTaskConverter.INSTANCE.toStopJobContext(context); TaskStopJobContext stopJobContext = JobTaskConverter.INSTANCE.toStopJobContext(context);
@ -90,10 +95,6 @@ public class BlockStrategies {
stopJobContext.setNeedUpdateTaskStatus(Boolean.TRUE); stopJobContext.setNeedUpdateTaskStatus(Boolean.TRUE);
instanceInterrupt.stop(stopJobContext); instanceInterrupt.stop(stopJobContext);
// 重新生成任务
JobTaskBatchGenerator jobTaskBatchGenerator = SpringContext.getBeanByType(JobTaskBatchGenerator.class);
JobTaskBatchGeneratorContext jobTaskBatchGeneratorContext = JobTaskConverter.INSTANCE.toJobTaskGeneratorContext(context);
jobTaskBatchGenerator.generateJobTaskBatch(jobTaskBatchGeneratorContext);
} }
} }

View File

@ -122,10 +122,10 @@ public class JobTimerTask implements TimerTask {
Duration duration = Duration.between(preTriggerAt, nextTriggerAt); Duration duration = Duration.between(preTriggerAt, nextTriggerAt);
long milliseconds = duration.toMillis(); long milliseconds = duration.toMillis();
log.info("常驻任务监控. 任务时间差:[{}] 取余:[{}]", milliseconds, System.currentTimeMillis() % 100); log.info("常驻任务监控. 任务时间差:[{}] 取余:[{}]", milliseconds, System.currentTimeMillis() % 1000);
job.setNextTriggerAt(nextTriggerAt); job.setNextTriggerAt(nextTriggerAt);
JobTimerWheel.register(jobTimerTaskDTO.getTaskBatchId(), timerTask, milliseconds - System.currentTimeMillis() % 100, TimeUnit.MILLISECONDS); JobTimerWheel.register(jobTimerTaskDTO.getTaskBatchId(), timerTask, milliseconds - System.currentTimeMillis() % 1000, TimeUnit.MILLISECONDS);
ResidentTaskCache.refresh(jobTimerTaskDTO.getJobId(), nextTriggerAt); ResidentTaskCache.refresh(jobTimerTaskDTO.getJobId(), nextTriggerAt);
} }
} }