ifishSocket/src/main/java/com/ifish/quartz/ScheduleJob.java

95 lines
3.2 KiB
Java

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()));
}
}
}