package com.eato2o.cn.task;
import com.eato2o.cn.domain.constant.OperationConstants;
import org.quartz.*;
import org.quartz.impl.StdSchedulerFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.HashMap;
import java.util.Map;
/**
- @ClassName TimedTaskUtils
- @Description <定时任务工具类>
- @Author YangYingBao
- @Version 1.0.0
- @Date 2023/2/8 16:26
*/
public class TimedTaskUtils {
protected static final Logger log = LoggerFactory.getLogger(TimedTaskUtils.class);
private static String cron = "0 0/5 * * * ?";
public static void startTask(String taskId){
//定时器对象
Scheduler scheduler;
try {
String jobName = taskId + OperationConstants.TASK_NAME;
scheduler = StdSchedulerFactory.getDefaultScheduler();
//如果任务存在就删除
if (scheduler.checkExists(JobKey.jobKey(jobName, taskId))) {
scheduler.deleteJob(JobKey.jobKey(jobName, taskId));
}
Map<String, Object> map = new HashMap<>();
// 工作名称
map.put("jobName",jobName);
// 任务id (订单id)
map.put("taskId", taskId);
//定义一个工作对象 设置工作名称与组名
JobDetail job = JobBuilder.newJob(CheckPayStatusJob.class)
.withIdentity(jobName, taskId)
.usingJobData(new JobDataMap(map)).build();
Trigger trigger = TriggerBuilder.newTrigger()
.withIdentity(jobName, taskId)
.withSchedule(CronScheduleBuilder.cronSchedule(cron)).build();
//设置工作 与触发器
scheduler.scheduleJob(job, trigger);
//开始定时任务
log.info("开始定时任务 !");
scheduler.start();
} catch (SchedulerException s) {
log.error("构建定时任务定时器对象错误{}", s.getMessage());
}
}
}