From db1a20a83c57c39a55ca6d54640c874810af8337 Mon Sep 17 00:00:00 2001 From: Zheng Jie <201507802@qq.com> Date: Fri, 24 Dec 2021 21:01:49 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=9A=E6=97=B6=E4=BB=BB=E5=8A=A1=E4=BC=98?= =?UTF-8?q?=E5=8C=96=EF=BC=8C=E9=BB=98=E8=AE=A4=E4=B8=8D=E6=89=93=E5=8D=B0?= =?UTF-8?q?SQL=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modules/quartz/config/JobRunner.java | 4 +-- .../modules/quartz/task/TestTask.java | 2 ++ .../modules/quartz/utils/ExecutionJob.java | 25 +++++++++---------- .../modules/quartz/utils/QuartzRunnable.java | 2 +- eladmin-system/src/main/resources/logback.xml | 4 +-- 5 files changed, 19 insertions(+), 18 deletions(-) diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/config/JobRunner.java b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/config/JobRunner.java index 65d7e235..547e822b 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/config/JobRunner.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/config/JobRunner.java @@ -45,9 +45,9 @@ public class JobRunner implements ApplicationRunner { */ @Override public void run(ApplicationArguments applicationArguments) { - log.info("--------------------注入定时任务---------------------"); + log.info("--------------------注入系统定时任务------------------"); List quartzJobs = quartzJobRepository.findByIsPauseIsFalse(); quartzJobs.forEach(quartzManage::addJob); - log.info("--------------------定时任务注入完成---------------------"); + log.info("--------------------定时任务注入完成------------------"); } } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/task/TestTask.java b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/task/TestTask.java index da1c8ff4..aff0ac86 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/task/TestTask.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/task/TestTask.java @@ -16,6 +16,7 @@ package me.zhengjie.modules.quartz.task; import lombok.extern.slf4j.Slf4j; +import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Component; /** @@ -24,6 +25,7 @@ import org.springframework.stereotype.Component; * @date 2019-01-08 */ @Slf4j +@Async @Component public class TestTask { diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/utils/ExecutionJob.java b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/utils/ExecutionJob.java index 57fb66af..0b352079 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/utils/ExecutionJob.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/utils/ExecutionJob.java @@ -19,7 +19,6 @@ import cn.hutool.extra.template.Template; import cn.hutool.extra.template.TemplateConfig; import cn.hutool.extra.template.TemplateEngine; import cn.hutool.extra.template.TemplateUtil; -import me.zhengjie.config.thread.ThreadPoolExecutorUtil; import me.zhengjie.domain.vo.EmailVo; import me.zhengjie.modules.quartz.domain.QuartzJob; import me.zhengjie.modules.quartz.domain.QuartzLog; @@ -31,6 +30,8 @@ import me.zhengjie.utils.SpringContextHolder; import me.zhengjie.utils.StringUtils; import me.zhengjie.utils.ThrowableUtil; import org.quartz.JobExecutionContext; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.scheduling.annotation.Async; import org.springframework.scheduling.quartz.QuartzJobBean; import java.util.*; @@ -44,17 +45,19 @@ import java.util.concurrent.*; @Async public class ExecutionJob extends QuartzJobBean { - /** 该处仅供参考 */ - private final static ThreadPoolExecutor EXECUTOR = ThreadPoolExecutorUtil.getPoll(); + private final Logger logger = LoggerFactory.getLogger(this.getClass()); @Override public void executeInternal(JobExecutionContext context) { + // 创建单个线程 + ExecutorService executor = Executors.newSingleThreadExecutor(); + // 获取任务 QuartzJob quartzJob = (QuartzJob) context.getMergedJobDataMap().get(QuartzJob.JOB_KEY); // 获取spring bean QuartzLogRepository quartzLogRepository = SpringContextHolder.getBean(QuartzLogRepository.class); QuartzJobService quartzJobService = SpringContextHolder.getBean(QuartzJobService.class); RedisUtils redisUtils = SpringContextHolder.getBean(RedisUtils.class); - + String uuid = quartzJob.getUuid(); QuartzLog log = new QuartzLog(); @@ -66,11 +69,8 @@ public class ExecutionJob extends QuartzJobBean { log.setCronExpression(quartzJob.getCronExpression()); try { // 执行任务 - System.out.println("--------------------------------------------------------------"); - System.out.println("任务开始执行,任务名称:" + quartzJob.getJobName()); - QuartzRunnable task = new QuartzRunnable(quartzJob.getBeanName(), quartzJob.getMethodName(), - quartzJob.getParams()); - Future future = EXECUTOR.submit(task); + QuartzRunnable task = new QuartzRunnable(quartzJob.getBeanName(), quartzJob.getMethodName(), quartzJob.getParams()); + Future future = executor.submit(task); future.get(); long times = System.currentTimeMillis() - startTime; log.setTime(times); @@ -79,8 +79,7 @@ public class ExecutionJob extends QuartzJobBean { } // 任务状态 log.setIsSuccess(true); - System.out.println("任务执行完毕,任务名称:" + quartzJob.getJobName() + ", 执行时间:" + times + "毫秒"); - System.out.println("--------------------------------------------------------------"); + logger.info("任务执行成功,任务名称:" + quartzJob.getJobName() + ", 执行时间:" + times + "毫秒"); // 判断是否存在子任务 if(StringUtils.isNotBlank(quartzJob.getSubTask())){ String[] tasks = quartzJob.getSubTask().split("[,,]"); @@ -91,8 +90,7 @@ public class ExecutionJob extends QuartzJobBean { if(StringUtils.isNotBlank(uuid)) { redisUtils.set(uuid, false); } - System.out.println("任务执行失败,任务名称:" + quartzJob.getJobName()); - System.out.println("--------------------------------------------------------------"); + logger.error("任务执行失败,任务名称:" + quartzJob.getJobName()); long times = System.currentTimeMillis() - startTime; log.setTime(times); // 任务状态 0:成功 1:失败 @@ -114,6 +112,7 @@ public class ExecutionJob extends QuartzJobBean { } } finally { quartzLogRepository.save(log); + executor.shutdown(); } } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/utils/QuartzRunnable.java b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/utils/QuartzRunnable.java index faf334ca..31c3a0f8 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/utils/QuartzRunnable.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/utils/QuartzRunnable.java @@ -37,7 +37,6 @@ public class QuartzRunnable implements Callable { throws NoSuchMethodException, SecurityException { this.target = SpringContextHolder.getBean(beanName); this.params = params; - if (StringUtils.isNotBlank(params)) { this.method = target.getClass().getDeclaredMethod(methodName, String.class); } else { @@ -46,6 +45,7 @@ public class QuartzRunnable implements Callable { } @Override + @SuppressWarnings("all") public Object call() throws Exception { ReflectionUtils.makeAccessible(method); if (StringUtils.isNotBlank(params)) { diff --git a/eladmin-system/src/main/resources/logback.xml b/eladmin-system/src/main/resources/logback.xml index 815dffc1..3f8f9d8f 100644 --- a/eladmin-system/src/main/resources/logback.xml +++ b/eladmin-system/src/main/resources/logback.xml @@ -17,8 +17,8 @@ - - + +