zl程序教程

您现在的位置是:首页 >  其他

当前栏目

Quartz 多个触发器详解编程语言

编程语言 详解 触发器 多个 quartz
2023-06-13 09:20:28 时间

生成静态html文件,7点到19点每5分钟生成一次,其他时间1小时生成一次。

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 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处理类 
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; 


@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(); // 获取ioc ioc = (Ioc) params.get("ioc"); // 获取Dao dao = ioc.get(NutDao.class,"dao"); // 获取当前模板 template = LocalCache.selectTemplateByID.get(Integer.parseInt(params.get("templateID").toString())); // 获取FreemarkerUtile freemarkerUtile = 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); }

原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/10103.html

cjava