package com.doumee.dao.timer.scheduler;
|
|
import com.doumee.config.SpringContextUtil;
|
import com.doumee.dao.timer.entity.LogState;
|
import com.doumee.dao.timer.entity.QuartzJob;
|
import com.doumee.dao.timer.entity.QuartzLog;
|
import com.doumee.service.timer.QuartzLogService;
|
import org.quartz.JobExecutionContext;
|
import org.springframework.scheduling.quartz.QuartzJobBean;
|
|
import java.lang.reflect.Method;
|
import java.util.Date;
|
|
/**
|
* 任务记录
|
* @author 公众号:知了一笑
|
* @since 2023-07-26 10:21
|
*/
|
public class QuartzRecord extends QuartzJobBean {
|
|
@Override
|
protected void executeInternal(JobExecutionContext context) {
|
QuartzJob quartzJob = (QuartzJob) context.getMergedJobDataMap().get(QuartzJob.JOB_PARAM_KEY) ;
|
QuartzLogService quartzLogService = (QuartzLogService) SpringContextUtil.getBean("quartzLogService") ;
|
// 定时器日志记录
|
QuartzLog quartzLog = new QuartzLog () ;
|
quartzLog.setJobId(quartzJob.getId());
|
quartzLog.setBeanName(quartzJob.getBeanName());
|
quartzLog.setParams(quartzJob.getParams());
|
quartzLog.setCreateTime(new Date());
|
long beginTime = System.currentTimeMillis() ;
|
try {
|
// 加载并执行
|
Object target = SpringContextUtil.getBean(quartzJob.getBeanName());
|
Method method = target.getClass().getDeclaredMethod("run", String.class,String.class);
|
method.invoke(target, quartzJob.getParams(),quartzJob.getModule());
|
long executeTime = System.currentTimeMillis() - beginTime;
|
quartzLog.setTimes((int)executeTime);
|
quartzLog.setModule(quartzJob.getModule());
|
quartzLog.setState(LogState.LOG_SUS.getStatus());
|
} catch (Exception e){
|
// 异常信息
|
long executeTime = System.currentTimeMillis() - beginTime;
|
quartzLog.setTimes((int)executeTime);
|
quartzLog.setState(LogState.LOG_FAIL.getStatus());
|
quartzLog.setError(e.getMessage());
|
} finally {
|
// 保存执行日志
|
quartzLogService.insert(quartzLog) ;
|
}
|
}
|
}
|