package com.mobile263.util;
import java.util.Date;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.quartz.CronScheduleBuilder;
import org.quartz.CronTrigger;
import org.quartz.Job;
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 org.quartz.impl.triggers.CronTriggerImpl;
public class QuartzHelper {
private static Log logger = LogFactory.getLog(QuartzHelper.class);
private static QuartzHelper m_QuartzHelper = null;
private static Scheduler scheduler = null;
private QuartzHelper() throws SchedulerException {
// 创建调度工厂
SchedulerFactory schedulerFactory = new StdSchedulerFactory();
// 从工厂中获取调度器
scheduler = schedulerFactory.getScheduler();
}
public static QuartzHelper GetIntance() {
if (m_QuartzHelper == null) {
synchronized (QuartzHelper.class) {
if (m_QuartzHelper == null) {
try {
m_QuartzHelper = new QuartzHelper();
} catch (Exception e) {
logger.error("QuartzHelper create error", e);
return null;
}
}
}
}
return m_QuartzHelper;
}
public void registScheduleJob(JobDetail jobDetail, CronTrigger cronTrigger) throws SchedulerException {
// 注册作业和触发器
scheduler.scheduleJob(jobDetail, cronTrigger);
}
public void startScheduler() throws SchedulerException {
// 开始调度任务
scheduler.start();
}
public CronTrigger getCronTrigger(String cronTriggerName, String cronTriggerGroup, String cronStr) {
CronTrigger cronTrigger = null;
if (isValidExpression(cronStr)) {
// 作业的触发器
cronTrigger = TriggerBuilder // 和之前的 SimpleTrigger 类似,现在的 CronTrigger 也是一个接口,通过 Tribuilder 的 build()方法来实例化
.newTrigger().withIdentity(cronTriggerName, cronTriggerGroup)
.withSchedule(CronScheduleBuilder.cronSchedule(cronStr)) // 在任务调度器中,使用任务调度器的 CronScheduleBuilder 来生成一个具体的 CronTrigger 对象
.build();
}
return cronTrigger;
}
public JobDetail getjobDetail(String detailName, String detailGroup, Class<? extends Job> jobClass) {
// 定义当前调度器的具体作业对象
JobDetail jobDetail = JobBuilder.newJob(jobClass).withIdentity(detailName, detailGroup).build();
return jobDetail;
}
public boolean isValidExpression(final String cronExpression) {
logger.info("cronExpression:" + cronExpression);
CronTriggerImpl trigger = new CronTriggerImpl();
try {
trigger.setCronExpression(cronExpression);
Date date = trigger.computeFirstFireTime(null);
return date != null && date.after(new Date());
} catch (Exception e) {
logger.error(" cronExpression error ,check it", e);
}
return false;
}
}
quartz 使用
猜你喜欢
转载自blog.csdn.net/yingcly003/article/details/86573346
今日推荐
周排行