package com.ifish.quartz; import org.apache.log4j.Logger; import org.quartz.*; import org.quartz.impl.StdSchedulerFactory; import org.springframework.beans.factory.annotation.Autowired; /** * 定时任务 * @author guogw */ public class ScheduleJob { private static Logger log = Logger.getLogger(ScheduleJob.class); //调度 private Scheduler scheduler = null; @Autowired private JobFactory jobFactory; public void init(){ try { //调度任务开启 SchedulerFactory sf = new StdSchedulerFactory(); scheduler = sf.getScheduler(); //实现job中注入bean scheduler.setJobFactory(jobFactory); scheduler.start(); } catch (SchedulerException e) { log.info(String.format("start scheduler error:{%s}",e.toString())); } } /** * 添加任务 * @param jobGroup * @throws SchedulerException */ public void addJob(JobGroup jobGroup){ try { log.info(String.format("添加任务:%s.%s",jobGroup.getJobName(),jobGroup.getTriggerName())); // log.info("添加任务:{}.{}",jobGroup.getJobName(),jobGroup.getTriggerName()); //任务 JobDetail jobDetail= JobBuilder.newJob(ExecuteJob.class) .usingJobData("macAddress", jobGroup.getMacAddress()) .usingJobData("timestamp", jobGroup.getTimestamp()) .withIdentity(jobGroup.getJobName(),jobGroup.getJobName()) .build(); //触发器 Trigger trigger= TriggerBuilder.newTrigger() .withIdentity(jobGroup.getTriggerName(),jobGroup.getTriggerGroup()) .startAt(jobGroup.getStartTime()).build(); //添加触发器 scheduler.scheduleJob(jobDetail,trigger); } catch (SchedulerException e) { log.info(String.format("addJob error【macAddress:{%s},jobGroup:{%s},triggerGroup:{%s},errMsg:{%s}】",jobGroup.getMacAddress(),jobGroup.getJobName(),jobGroup.getTriggerGroup(),e.toString())); // log.error("addJob error【macAddress:{},jobGroup:{},triggerGroup:{},errMsg:{}】",jobGroup.getMacAddress(),jobGroup.getJobName(),jobGroup.getTriggerGroup(),e.toString()); } } /** * 移除任务 * @param jobGroup * @throws SchedulerException */ public void deleteJob(JobGroup jobGroup){ try { log.info(String.format("移除任务:%s.%s",jobGroup.getJobName(),jobGroup.getTriggerName())); //触发器 TriggerKey triggerKey = TriggerKey.triggerKey(jobGroup.getTriggerName(),jobGroup.getTriggerGroup()); //停止触发器 scheduler.pauseTrigger(triggerKey); //移除触发器 scheduler.unscheduleJob(triggerKey); //任务 JobKey jobKey = JobKey.jobKey(jobGroup.getJobName(),jobGroup.getJobGroup()); //删除任务 scheduler.deleteJob(jobKey); } catch (SchedulerException e) { log.info(String.format("deleteJob error【macAddress:{%s},jobGroup:{%s},triggerGroup:{%s},errMsg:{%s}】",jobGroup.getMacAddress(),jobGroup.getJobName(),jobGroup.getTriggerGroup(),e.toString())); } } /** * 关闭调度任务 */ public void shutdown(){ try { //关闭任务 scheduler.shutdown(); } catch (SchedulerException e) { log.info(String.format("shutdown scheduler error:{%s}",e.toString())); } } }