任务实体类
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
@Data
public class Template implements Serializable {
private static final long serialVersionUID = 1;
/**
* 主键id
*/
private String id;
/**
* cron表达式
*/
private String corn;
/**
* 接口路径
*/
private String classpath;
}
任务工具类
import lombok.extern.slf4j.Slf4j;
import org.quartz.*;
import org.quartz.impl.matchers.GroupMatcher;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
@Slf4j
public class QuartUtil {
@Autowired
private static Scheduler scheduler;
/**
* 添加任务
*
* @param task
*/
public static void addJob(Template task) {
try {
// 创建jobDetail实例,绑定Job实现类
// 指明job的名称,所在组的名称,以及绑定job类
JobDetail jobDetail = JobBuilder.newJob((Class<? extends Job>) Class.forName(task.getClasspath()))
.withIdentity(String.valueOf(task.getId())).build();
// 定义调度触发规则
// 使用cornTrigger规则
Trigger trigger = TriggerBuilder.newTrigger().withIdentity(task.getId())
.startAt(DateBuilder.futureDate(1, DateBuilder.IntervalUnit.SECOND))
.withSchedule(CronScheduleBuilder.cronSchedule(task.getCorn())).startNow().build();
// 把作业和触发器注册到任务调度中
scheduler.scheduleJob(jobDetail, trigger);
// 启动
if (!scheduler.isShutdown()) {
scheduler.start();
}
} catch (Exception e) {
e.printStackTrace();
}
}
public static List<Template> getAllJob() throws SchedulerException {
GroupMatcher<JobKey> matcher = GroupMatcher.anyJobGroup();
Set<JobKey> jobKeys = scheduler.getJobKeys(matcher);
List<Template> jobList = new ArrayList<>();
for (JobKey jobKey : jobKeys) {
List<? extends Trigger> triggers = scheduler.getTriggersOfJob(jobKey);
for (Trigger trigger : triggers) {
TriggerKey triggerKey = TriggerKey.triggerKey(jobKey.getName(), jobKey.getGroup());
Trigger.TriggerState triggerState = scheduler.getTriggerState(triggerKey);
Template job = new Template();
job.setState(triggerState.name());
job.setId(jobKey.getName());
if (trigger instanceof CronTrigger) {
CronTrigger cronTrigger = (CronTrigger) trigger;
String cronExpression = cronTrigger.getCronExpression();
job.setCorn(cronExpression);
}
log.info("定时任务:" + job.toString());
jobList.add(job);
}
}
return jobList;
}
/**
* 暂停一个job
*
* @param task
* @throws SchedulerException
*/
public static void pauseJob(Template task) throws SchedulerException {
JobKey jobKey = JobKey.jobKey(task.getId());
scheduler.pauseJob(jobKey);
}
/**
* 恢复一个job
*
* @param task
* @throws SchedulerException
*/
public static void resumeJob(Template task) throws SchedulerException {
JobKey jobKey = JobKey.jobKey(task.getId());
scheduler.resumeJob(jobKey);
}
/**
* 删除一个job
*
* @param task
* @throws SchedulerException
*/
public static void deleteJob(Template task) throws SchedulerException {
JobKey jobKey = JobKey.jobKey(task.getId());
scheduler.deleteJob(jobKey);
}
}
添加任务执行
package ;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import javax.annotation.Resource;
public class DJob implements Job {
@Resource
Service service;
@Override
public void execute(JobExecutionContext jobExecutionContext) {
service.executeJob();
}
}