如果要在触发器的基础上,排除一些时间区间不执行任务,就要用到 Quartz的Calendar类(注意不是 JDK的 Calendar)。可以按年、月、周、日、特定日期、Cron表达式排除。

调用 Trigger的 modifiedByCalendar()添加到触发器中,并且调用调度器的addCalendar()方法注册排除规则。

public class CalendarDemo {public static void main(String[] args) throws Exception {SchedulerFactory sf = new StdSchedulerFactory();Scheduler scheduler = sf.getScheduler();scheduler.start();// 定义日历AnnualCalendar holidays = new AnnualCalendar();// 排除咕泡日Calendar gupaoDay = (Calendar) new GregorianCalendar(2019, 8, 8);holidays.setDayExcluded(gupaoDay, true);// 排除中秋节Calendar midAutumn = new GregorianCalendar(2019, 9, 13);holidays.setDayExcluded(midAutumn, true);// 排除圣诞节Calendar christmas = new GregorianCalendar(2019, 12, 25);holidays.setDayExcluded(christmas, true);// 调度器添加日历scheduler.addCalendar("holidays", holidays, false, false);JobDetail jobDetail = JobBuilder.newJob(MyJob1.class).withIdentity("job1", "group1").usingJobData("leon","2673").build();Trigger trigger = TriggerBuilder.newTrigger().withIdentity("trigger1", "group1").startNow().modifiedByCalendar("holidays").withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(2).repeatForever()).build();Date firstRunTime = scheduler.scheduleJob(jobDetail, trigger);System.out.println(jobDetail.getKey() + " 第一次触发: " + firstRunTime);}
}
Calendar 名称 用法
BaseCalendar 为高级的Calendar 实现了基本的功能,实现了org.quartz.Calendar 接口
AnnualCalendar 排除年中一天或多天
CronCalendar 日历的这种实现排除了由给定的CronExpression 表达的时间集合。例如,
您可以使用此日历使用表达式“* * 0-7,18-23?* *”每天排除所有营业时
间(上午8 点至下午5 点)。如果CronTrigger 具有给定的cron 表达式并
且与具有相同表达式的CronCalendar 相关联,则日历将排除触发器包含的
所有时间,并且它们将彼此抵消。
DailyCalendar 您可以使用此日历来排除营业时间(上午8 点- 5 点)每天。每个
DailyCalendar 仅允许指定单个时间范围,并且该时间范围可能不会跨越每
日边界(即,您不能指定从上午8 点至凌晨5 点的时间范围)。如果属
性invertTimeRange 为false(默认),则时间范围定义触发器不允许触发
的时间范围。如果invertTimeRange 为true,则时间范围被反转- 也就是
排除在定义的时间范围之外的所有时间。
HolidayCalendar 特别的用于从Trigger 中排除节假日
MonthlyCalendar 排除月份中的指定数天,例如,可用于排除每月的最后一天
WeeklyCalendar 排除星期中的任意周几,例如,可用于排除周末,默认周六和周日

Quartz框架基于Calendar的排除规则相关推荐

  1. quartz (一) 基于 Quartz 开发企业级任务调度应用

    本文转自:http://www.ibm.com/developerworks/cn/opensource/os-cn-quartz/ Quartz 基本概念及原理 Quartz Scheduler 开 ...

  2. SpringBoot与quartz框架实现分布式定时任务

    前言 quartz的分布式调度策略是以数据库为边界资源的一种异步策略.各个调度器都遵守一个基于数据库锁的操作规则从而保证了操作的唯一性. 在quartz的集群解决方案里有张表scheduler_loc ...

  3. Quartz框架介绍

    一.Quartz概述: Quartz是一个完全由Java编写的开源任务调度的框架,通过触发器设置作业定时运行规则,控制作业的运行时间.其中quartz集群通过故障切换和负载平衡的功能,能给调度器带来高 ...

  4. Mybatis逆向工程、Quartz框架的定时任务管理详解、Cron表达式

    Mybatis逆向工程   mybatis是目前很流行的持久层框架,很多企业都在采用.但是其复杂繁琐的配置,重复性的实体类创建等等,消耗了程序员大量的精力,同时有些地方如果一个细小的疏忽,可能导致最终 ...

  5. php验证规则表单,PHP Yii框架之表单验证规则大全

    Yii是一个基于组件的高性能PHP框架,用于开发大型Web应用.Yii采用严格的OOP编写,并有着完善的库引用以及全面的教程. 废话不多说了,直接给大家贴代码了. class ContactForm ...

  6. Quartz框架调用Demo

    Quartz框架调用Demo 任务调度在JAVA应用程序中运用的十分普遍,掌握QUARTZ是必备的技能; 官网:http://www.quartz-scheduler.org/ 下载最新1.80资源包 ...

  7. PHP Yii框架之表单验证规则大全

    Yii是一个基于组件的高性能PHP框架,用于开发大型Web应用.Yii采用严格的OOP编写,并有着完善的库引用以及全面的教程,本文给大家介绍php yii框架之表单验证规则大全,感兴趣的朋友一起学习吧 ...

  8. xms应用框架 - 基于.netcore

    xms应用框架 - 基于.netcore 背景 一.xms是什么 二.能干什么 三.目标 四.框架介绍 1.元数据管理 2.组织架构 3.授权体系 4.高度可视化配置 5.业务扩展 6.流程 7.二次 ...

  9. spring整合quartz框架定时任务实战

    Spring整合定时任务调度框架Quartz实战 2014-09-12 11:51 9707人阅读 评论(6) 收藏 举报  分类: [综合问题](74)  版权声明:本文为博主原创文章,未经博主允许 ...

最新文章

  1. 2021年中国工业互联网安全大赛核能行业赛道writeup之隐写
  2. failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found
  3. 【每日学习Mybatis中基础】trim标签使用
  4. 012_CSS相邻兄弟选择器
  5. 安装Zabbix过程中出现的问题集
  6. python 元类 type_Python 使用元类type创建类对象常见应用详解
  7. JAVA通过SSL证书创建MS AD账户及设置密码
  8. 如何做一个国产数据库(二)
  9. java string补空格_Java String字符串补0或空格详解
  10. 微课|玩转Python轻松过二级:第2章课后习题解答(3课,79题)
  11. 【原创】分享一个分析函数统计案例
  12. 福大软工1816 - 第四次作业(团队展示)
  13. 卷积神经网络中的参数计算(转载)
  14. 小米双频AC智能路由器699元震撼首发
  15. 【Proteus仿真】Arduino UNO +WS2812玩转霓虹灯
  16. 简单阻抗匹配电路及公式
  17. 伍斯特理工学院计算机硕士怎么样,伍斯特理工学院硕士怎么样?
  18. 数字冰雹-智慧监所可视化分析决策系统
  19. 提取牛客校招日历时间_python
  20. Android studio隐藏app应用图标

热门文章

  1. SSL certificate problem: unable to get local issuer certificate 的解决方法
  2. 【转】centos安装vim7.4(转)
  3. Genymotion中文手册
  4. Lua === Lua 十分钟基础入门上手
  5. 【Redis学习】Redis管理命令总结
  6. 应用分类练手项目计划
  7. 如何基于asp.net core的Identity框架在mysql上作身份验证处理
  8. 数据库的日常管理经验浅谈
  9. iOS8 TabBarItem设置自定义图片问题
  10. Vue.js——vue-resource全攻略