quartz demo MyScheduler
package ?;
import java.util.ArrayList;
import java.util.List;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.quartz.CronScheduleBuilder;
import org.quartz.CronTrigger;
import org.quartz.JobBuilder;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SchedulerFactory;
import org.quartz.TriggerBuilder;
import org.quartz.impl.StdSchedulerFactory;
import com.dcb.customs.b.pojo.TimedTask;
import ?.c.job.*;
import ?.d.service.BackupAndRemoveServiceImpl;
/**
* 任务调度
*/
@SuppressWarnings("unused")
public class MyScheduler{
private static Logger log = LogManager.getLogger(MyScheduler.class);
public static void main(String[] args) throws SchedulerException, ClassNotFoundException {
// 1、创建调度器Scheduler
SchedulerFactory schedulerFactory = new StdSchedulerFactory();
Scheduler scheduler = schedulerFactory.getScheduler();
// 查詢数据库动态定时任务
// 定时class为继承Job
List
list.add(new TimedTask(1, "2021-01-01", "0 0/10 * * * ?", 1,
MyScheduler.class.getClassLoader().loadClass("?.c.job.?")));
list.add(new TimedTask(2, "2021-01-01", "0 0/1 * * * ?", 1,
MyScheduler.class.getClassLoader().loadClass("?.c.job.?")));
list.add(new TimedTask(3, "2021-01-01", "0 0 0 */1 * ?", 1,
MyScheduler.class.getClassLoader().loadClass("?.c.job.BackupAndRemoveJob")));
for (int i = 0; i < list.size(); i++) {
// 2、创建JobDetail实例,并与PrintWordsJob类绑定(Job执行内容)
JobDetail jobDetail = JobBuilder.newJob(list.get(i).getJobClass())
.usingJobData("jobDetail-"+list.get(i).getId(), "Job")
.withIdentity("job-"+list.get(i).getId(), "group-"+list.get(i).getId()).build();
// // 传参
// jobDetail.getJobDataMap().put("pool", list.get(i));
// 3、构建Trigger实例
CronTrigger cronTrigger = TriggerBuilder.newTrigger()
.withIdentity("trigger-"+list.get(i).getId(), "triggerGroup-"+list.get(i).getId())
.usingJobData("trigger-"+list.get(i).getId(), "这是jobDetail的trigger")
.startNow()//立即生效
.withSchedule(CronScheduleBuilder.cronSchedule(list.get(i).getCron() ))
.build();
//4、执行
scheduler.scheduleJob(jobDetail, cronTrigger);
log.info("--------scheduler " + list.get(i).getId() + " start ! ------------");
scheduler.start();
log.info("--------scheduler " + list.get(i).getId() + " shutdown ! ------------");
}
}
}
package ?.b.pojo;
/**
* 定时任务
*/
public class TimedTask {
// 定时任务
private Integer id;
private String creatTime;
private String cron;
private Integer status;// (开关)
private Class<?> jobClass;
public TimedTask() {
super();
}
public TimedTask(Integer id, String creatTime, String cron, Integer status,
Class<?> jobClass) {
super();
this.id = id;
this.creatTime = creatTime;
this.cron = cron;
this.status = status;
this.jobClass = jobClass;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getCreatTime() {
return creatTime;
}
public void setCreatTime(String creatTime) {
this.creatTime = creatTime;
}
public String getCron() {
return cron;
}
public void setCron(String cron) {
this.cron = cron;
}
public Integer getStatus() {
return status;
}
public void setStatus(Integer status) {
this.status = status;
}
public Class getJobClass() {
return jobClass;
}
public void setJobClass(Class jobClass) {
this.jobClass = jobClass;
}
@Override
public String toString() {
return "Pool [id=" + id + ", creatTime=" + creatTime + ", cron=" + cron
+ ", status=" + status + ", jobClass=" + jobClass + "]";
}
}
package ?.c.job;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import ?.d.service.BackupAndRemoveServiceImpl;
/**
* 备份和移动工作
*/
public class BackupAndRemoveJob implements Job {
private static Logger log = LogManager.getLogger(BackupAndRemoveJob.class);
@Override
public void execute(JobExecutionContext arg0) throws JobExecutionException {
// TODO Auto-generated method stub
log.info(" BackupAndRemove " + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()) );
BackupAndRemoveServiceImpl backupService = new BackupAndRemoveServiceImpl();
backupService.dbBackup();
backupService.fileBackup();
}
}