From 74defc52b291572df687a0fac941968f68875066 Mon Sep 17 00:00:00 2001 From: "[li_she]" <[li.she@xujiesoft.com]> Date: Fri, 18 Feb 2022 11:02:26 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=9A=E6=97=B6=E4=BB=BB=E5=8A=A1=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E8=BF=94=E5=9B=9E=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../job/entity/ScheduleJobLogEntity.java | 2 + .../com/gaotao/modules/job/task/ITask.java | 3 +- .../com/gaotao/modules/job/task/TestTask.java | 5 +- .../gaotao/modules/job/utils/ScheduleJob.java | 67 +++++++++---------- 4 files changed, 40 insertions(+), 37 deletions(-) diff --git a/src/main/java/com/gaotao/modules/job/entity/ScheduleJobLogEntity.java b/src/main/java/com/gaotao/modules/job/entity/ScheduleJobLogEntity.java index cf6c810..4eccb93 100644 --- a/src/main/java/com/gaotao/modules/job/entity/ScheduleJobLogEntity.java +++ b/src/main/java/com/gaotao/modules/job/entity/ScheduleJobLogEntity.java @@ -61,5 +61,7 @@ public class ScheduleJobLogEntity implements Serializable { */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date createTime; + + private String errorMsg; } diff --git a/src/main/java/com/gaotao/modules/job/task/ITask.java b/src/main/java/com/gaotao/modules/job/task/ITask.java index 2ab32f8..4f5df22 100644 --- a/src/main/java/com/gaotao/modules/job/task/ITask.java +++ b/src/main/java/com/gaotao/modules/job/task/ITask.java @@ -14,5 +14,6 @@ public interface ITask { * * @param params 参数,多参数使用JSON数据 */ - void run(String params); + String run(String params); + } \ No newline at end of file diff --git a/src/main/java/com/gaotao/modules/job/task/TestTask.java b/src/main/java/com/gaotao/modules/job/task/TestTask.java index 4e33193..2a988d3 100644 --- a/src/main/java/com/gaotao/modules/job/task/TestTask.java +++ b/src/main/java/com/gaotao/modules/job/task/TestTask.java @@ -17,9 +17,10 @@ import org.springframework.stereotype.Component; public class TestTask implements ITask { private Logger logger = LoggerFactory.getLogger(getClass()); - @Override - public void run(String params){ + + public String run(String params){ logger.debug("TestTask定时任务正在执行,参数为:{}", params); + return "执行结果"; } } diff --git a/src/main/java/com/gaotao/modules/job/utils/ScheduleJob.java b/src/main/java/com/gaotao/modules/job/utils/ScheduleJob.java index 2f2c736..3dc5e80 100644 --- a/src/main/java/com/gaotao/modules/job/utils/ScheduleJob.java +++ b/src/main/java/com/gaotao/modules/job/utils/ScheduleJob.java @@ -1,4 +1,4 @@ - + package com.gaotao.modules.job.utils; @@ -15,61 +15,60 @@ import org.springframework.scheduling.quartz.QuartzJobBean; import java.lang.reflect.Method; import java.util.Date; +import java.util.List; /** * 定时任务 - * - * */ public class ScheduleJob extends QuartzJobBean { - private Logger logger = LoggerFactory.getLogger(getClass()); + private Logger logger = LoggerFactory.getLogger(getClass()); @Override protected void executeInternal(JobExecutionContext context) throws JobExecutionException { ScheduleJobEntity scheduleJob = (ScheduleJobEntity) context.getMergedJobDataMap() - .get(ScheduleJobEntity.JOB_PARAM_KEY); - + .get(ScheduleJobEntity.JOB_PARAM_KEY); + //获取spring bean ScheduleJobLogService scheduleJobLogService = (ScheduleJobLogService) SpringContextUtils.getBean("scheduleJobLogService"); - + //数据库保存执行记录 ScheduleJobLogEntity log = new ScheduleJobLogEntity(); log.setJobId(scheduleJob.getJobId()); log.setBeanName(scheduleJob.getBeanName()); log.setParams(scheduleJob.getParams()); log.setCreateTime(new Date()); - + //任务开始时间 long startTime = System.currentTimeMillis(); - + try { //执行任务 - logger.debug("任务准备执行,任务ID:" + scheduleJob.getJobId()); + logger.debug("任务准备执行,任务ID:" + scheduleJob.getJobId()); + + Object target = SpringContextUtils.getBean(scheduleJob.getBeanName()); + Method method = target.getClass().getDeclaredMethod("run", String.class); + Object invoke = method.invoke(target, scheduleJob.getParams()); + + //任务执行总时长 + long times = System.currentTimeMillis() - startTime; + log.setTimes((int) times); + //任务状态 0:成功 1:失败 + log.setStatus(0); + log.setErrorMsg(invoke.toString()); + logger.debug("任务执行完毕,任务ID:" + scheduleJob.getJobId() + " 总共耗时:" + times + "毫秒"); + } catch (Exception e) { + logger.error("任务执行失败,任务ID:" + scheduleJob.getJobId(), e); - Object target = SpringContextUtils.getBean(scheduleJob.getBeanName()); - Method method = target.getClass().getDeclaredMethod("run", String.class); - method.invoke(target, scheduleJob.getParams()); - - //任务执行总时长 - long times = System.currentTimeMillis() - startTime; - log.setTimes((int)times); - //任务状态 0:成功 1:失败 - log.setStatus(0); - - logger.debug("任务执行完毕,任务ID:" + scheduleJob.getJobId() + " 总共耗时:" + times + "毫秒"); - } catch (Exception e) { - logger.error("任务执行失败,任务ID:" + scheduleJob.getJobId(), e); - - //任务执行总时长 - long times = System.currentTimeMillis() - startTime; - log.setTimes((int)times); - - //任务状态 0:成功 1:失败 - log.setStatus(1); - log.setError(StringUtils.substring(e.toString(), 0, 2000)); - }finally { - scheduleJobLogService.save(log); - } + //任务执行总时长 + long times = System.currentTimeMillis() - startTime; + log.setTimes((int) times); + //任务状态 0:成功 1:失败 + log.setStatus(1); + log.setErrorMsg(e.getMessage()); + log.setError(StringUtils.substring(e.toString(), 0, 2000)); + } finally { + scheduleJobLogService.save(log); + } } }