Quartz 多个触发器

来源:互联网 发布:网络礼仪有哪些 编辑:程序博客网 时间:2024/06/16 13:04

创建job并给job添加多个触发器

package com.f139.frame.job;import static org.quartz.JobBuilder.newJob;import static org.quartz.TriggerBuilder.newTrigger;import static org.quartz.CronScheduleBuilder.cronSchedule;import java.text.ParseException;import java.util.Collection;import java.util.HashMap;import java.util.Map;import org.nutz.ioc.Ioc;import org.quartz.JobDataMap;import org.quartz.JobDetail;import org.quartz.JobKey;import org.quartz.Scheduler;import org.quartz.SchedulerException;import org.quartz.SchedulerFactory;import org.quartz.TriggerKey;import org.quartz.impl.StdSchedulerFactory;import com.f139.frame.pojo.factory.Template;public class CreateJob {private static SchedulerFactory sf = new StdSchedulerFactory();public static void createTemplateJob(Map<Integer, Template> map, Ioc ioc) {Scheduler sched;try {sched = sf.getScheduler();// ioc参数,将ioc传递到job中Map<String, Object> params = new HashMap<String, Object>();params.put("ioc", ioc);// 获取所有模板Collection<Template> templates = map.values();for (Template template : templates) {if (template.getIntervalTime() > 0) {// 将当前模板ID传入job中params.put("templateID", template.getTemplateID());// 创建作业JobDetail jobDetail = newJob(TemplateJob.class).withIdentity(new JobKey("templateJob_" + template.getTemplateID(), "template")).usingJobData(new JobDataMap(params)).build();// 创建触发器,并将触发器加入到作业中sched.scheduleJob(jobDetail, newTrigger().withIdentity(new TriggerKey("between7and19_" + template.getTemplateID(), "template")).withSchedule(cronSchedule("0 0/1 7-19 * * ?")).forJob(jobDetail).build());sched.scheduleJob(newTrigger().withIdentity(new TriggerKey("between0and7_" + template.getTemplateID(), "template")).withSchedule(cronSchedule("0 0/5 0-7 * * ?")).forJob(jobDetail).build());sched.scheduleJob(newTrigger().withIdentity(new TriggerKey("between19and23_" + template.getTemplateID(), "template")).withSchedule(cronSchedule("0 0/5 19-23 * * ?")).forJob(jobDetail).build());}}sched.start();} catch (SchedulerException e) {e.printStackTrace();} catch (ParseException e) {e.printStackTrace();}}}


job处理类

package com.f139.frame.job;import java.util.Map;import org.nutz.dao.Dao;import org.nutz.ioc.Ioc;import org.quartz.Job;import org.quartz.JobExecutionContext;import org.quartz.JobExecutionException;import com.f139.frame.freemarker.FreemarkerUtile;import com.f139.frame.pojo.factory.Log;import com.f139.frame.pojo.factory.Template;import com.f139.frame.system.LocalCache;import com.f139.frame.util.DateUtil;public class TemplateJob implements Job {private Dao dao = null;private Ioc ioc = null;@Override@SuppressWarnings("unchecked")public void execute(JobExecutionContext context) throws JobExecutionException {Map<String, Object> params = null;Template template = null;FreemarkerUtile freemarkerUtile = null;try {// 获取参数params = context.getJobDetail().getJobDataMap();// 获取iocioc = (Ioc) params.get("ioc");                // 获取Daodao = ioc.get(NutDao.class,"dao");// 获取当前模板template = LocalCache.selectTemplateByID.get(Integer.parseInt(params.get("templateID").toString()));// 获取FreemarkerUtilefreemarkerUtile = ioc.get(FreemarkerUtile.class, "freemarkerUtile");// 创建文件freemarkerUtile.createHtml(template.getTemplateContent(), template.getFileUrl(), null);} catch (Exception e) {FailLog("模板" + template.getTemplateName() + "在" + DateUtil.getNowString() + "生成静态文件时发生异常!");}}public void FailLog(String message) {Log log = new Log();log.setUserName("admin");log.setLogClass("html");log.setLogLevel("9");log.setLogMessage(message);log.setUpdateTime(DateUtil.getNowString());dao.insert(log);}}