博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Quartz 多个触发器
阅读量:5238 次
发布时间:2019-06-14

本文共 4530 字,大约阅读时间需要 15 分钟。

最近项目中要做个定时生成静态html文件东东,7点到19点每5分钟生成一次,其他时间1小时生成一次,刚开始就走错了 居然想用一条cron表达式搞定,搞了半天,问了好多人,得到一个好的办法,就是给以个job创建多个触发器,不扯了,看代码。。 

 

创建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
map, Ioc ioc) { Scheduler sched; try { sched = sf.getScheduler(); // ioc参数,将ioc传递到job中 Map
params = new HashMap
(); params.put("ioc", ioc); // 获取所有模板 Collection

  

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

  

 

转载于:https://www.cnblogs.com/a757956132/p/4823269.html

你可能感兴趣的文章
解决miner.start() 返回null
查看>>
bzoj 2007: [Noi2010]海拔【最小割+dijskstra】
查看>>
BZOJ 1001--[BeiJing2006]狼抓兔子(最短路&对偶图)
查看>>
C# Dynamic通用反序列化Json类型并遍历属性比较
查看>>
128 Longest Consecutive Sequence 一个无序整数数组中找到最长连续序列
查看>>
定制jackson的自定义序列化(null值的处理)
查看>>
auth模块
查看>>
javascript keycode大全
查看>>
前台freemark获取后台的值
查看>>
log4j.properties的作用
查看>>
游戏偶感
查看>>
Leetcode: Unique Binary Search Trees II
查看>>
C++ FFLIB 之FFDB: 使用 Mysql&Sqlite 实现CRUD
查看>>
Spring-hibernate整合
查看>>
c++ map
查看>>
exit和return的区别
查看>>
discuz 常用脚本格式化数据
查看>>
洛谷P2777
查看>>
PHPStorm2017设置字体与设置浏览器访问
查看>>
Django 相关
查看>>