第六节: 六类Calander处理六种不同的时间场景
背景介绍及其使用
该章节主要补充介绍,在前一章四类触发器的基础上配合六大Canlander来动态删减某些时间,来满足更多的应用场景。
1. DailyCalendar:动态排除某天的某些字段.
(需求:每天8-23点执行,每隔1s执行一次,但是21-22点这个区间不执行)
2. WeeklyCalendar:适合在星期几的维度上做“减法操作”
(需求:每天8-23点执行,每隔1s执行一次,但是周五这一天不执行)
3. HolidayCalendar:适合当年的某一天不能执行
(需求:每天8-23点执行,每隔1s执行一次,但是今年的6月16号这一天不执行)
4. MonthlyCalendar:适合某个月中的某一天不能执行
(需求:每天8-23点执行,每隔1s执行一次,但是每月的27号不执行)
5. AnnualCalendar:适合每年指定的某一天不能执行(有问题)
(需求:每天8-23点执行,每隔1s执行一次,但是每年的6月16号这一天不执行)
6. CronCalendar:字符串表达式来排除某一天,某一个月份,某一年都可以
(需求:每天8-23点执行,每隔1s执行一次,但是2月27号这天不执行)
代码分享:
public static void CalanderShow()
{
//1. 每天8-23点执行,每隔1s执行一次,但是21-22点这个区间不执行
{
IScheduler scheduler = StdSchedulerFactory.GetDefaultScheduler();
scheduler.Start();
//单独记录一个区间段 21-22点
DailyCalendar dailyCalendar = new DailyCalendar(DateBuilder.DateOf(, , ).DateTime,
DateBuilder.DateOf(, , ).DateTime);
scheduler.AddCalendar("mycalendar", dailyCalendar, true, true); var job = JobBuilder.Create<HelloJob>().Build();
var trigger = TriggerBuilder.Create().WithDailyTimeIntervalSchedule(
x => x.OnEveryDay()
.StartingDailyAt(TimeOfDay.HourAndMinuteOfDay(, ))
.EndingDailyAt(TimeOfDay.HourAndMinuteOfDay(, ))
.WithIntervalInSeconds()
)
.ModifiedByCalendar("mycalendar")
.Build();
scheduler.ScheduleJob(job, trigger);
} //2. 每天8-23点执行,每隔1s执行一次,但是周五这一天不执行
{
IScheduler scheduler = StdSchedulerFactory.GetDefaultScheduler();
scheduler.Start();
//设定周五不能执行
WeeklyCalendar calendar = new WeeklyCalendar();
calendar.SetDayExcluded(DayOfWeek.Friday, true);
scheduler.AddCalendar("mycalendar", calendar, true, true); var job = JobBuilder.Create<HelloJob>().Build();
var trigger = TriggerBuilder.Create().WithDailyTimeIntervalSchedule(
x => x.OnEveryDay()
.StartingDailyAt(TimeOfDay.HourAndMinuteOfDay(, ))
.EndingDailyAt(TimeOfDay.HourAndMinuteOfDay(, ))
.WithIntervalInSeconds()
)
.ModifiedByCalendar("mycalendar")
.Build();
scheduler.ScheduleJob(job, trigger);
} //3. 每天8-23点执行,每隔1s执行一次,但是当年6月16号这一天不执行
{
IScheduler scheduler = StdSchedulerFactory.GetDefaultScheduler();
scheduler.Start();
HolidayCalendar calendar = new HolidayCalendar();
calendar.AddExcludedDate(DateTime.Parse("06-16")); //把当年6月16日排除在外 scheduler.AddCalendar("mycalendar", calendar, true, true);
var job = JobBuilder.Create<HelloJob>().Build();
var trigger = TriggerBuilder.Create().WithDailyTimeIntervalSchedule(
x => x.OnEveryDay()
.StartingDailyAt(TimeOfDay.HourAndMinuteOfDay(, ))
.EndingDailyAt(TimeOfDay.HourAndMinuteOfDay(, ))
.WithIntervalInSeconds()
)
.ModifiedByCalendar("mycalendar")
.Build();
scheduler.ScheduleJob(job, trigger); } //4. 每天8-23点执行,每隔1s执行一次,但是每月的27号不执行
{
IScheduler scheduler = StdSchedulerFactory.GetDefaultScheduler();
scheduler.Start(); //指定月份中的某一天不能执行
MonthlyCalendar calendar = new MonthlyCalendar();
calendar.SetDayExcluded(, true); //将27号这天排除在外
scheduler.AddCalendar("mycalendar", calendar, true, true); var job = JobBuilder.Create<HelloJob>().Build();
var trigger = TriggerBuilder.Create().WithDailyTimeIntervalSchedule(
x => x.OnEveryDay()
.StartingDailyAt(TimeOfDay.HourAndMinuteOfDay(, ))
.EndingDailyAt(TimeOfDay.HourAndMinuteOfDay(, ))
.WithIntervalInSeconds()
)
.ModifiedByCalendar("mycalendar")
.Build(); scheduler.ScheduleJob(job, trigger);
} //5. 每天8-23点执行,每隔1s执行一次,但是每年的6月16号这一天不执行
{
IScheduler scheduler = StdSchedulerFactory.GetDefaultScheduler();
scheduler.Start(); AnnualCalendar calendar = new AnnualCalendar();
calendar.SetDayExcluded(DateTime.Parse("06-16"), true); //把每年的6月16日排除在外
scheduler.AddCalendar("mycalendar", calendar, true, true); var job = JobBuilder.Create<HelloJob>().Build();
var trigger = TriggerBuilder.Create().WithDailyTimeIntervalSchedule(
x => x.OnEveryDay()
.StartingDailyAt(TimeOfDay.HourAndMinuteOfDay(, ))
.EndingDailyAt(TimeOfDay.HourAndMinuteOfDay(, ))
.WithIntervalInSeconds()
)
.ModifiedByCalendar("mycalendar")
.Build();
scheduler.ScheduleJob(job, trigger);
} //6.每天8-23点执行,每隔1s执行一次,但是2月27号这天不执行
{
IScheduler scheduler = StdSchedulerFactory.GetDefaultScheduler();
scheduler.Start(); CronCalendar calendar = new CronCalendar("* * * 27 2 ?");
scheduler.AddCalendar("mycalendar", calendar, true, true); var job = JobBuilder.Create<HelloJob>().Build();
var trigger = TriggerBuilder.Create().WithDailyTimeIntervalSchedule(
x => x.OnEveryDay()
.StartingDailyAt(TimeOfDay.HourAndMinuteOfDay(, ))
.EndingDailyAt(TimeOfDay.HourAndMinuteOfDay(, ))
.WithIntervalInSeconds()
)
.ModifiedByCalendar("mycalendar")
.Build();
scheduler.ScheduleJob(job, trigger);
} }
第六节: 六类Calander处理六种不同的时间场景的更多相关文章
- 第九节: 利用RemoteScheduler实现Sheduler的远程控制 第八节: Quartz.Net五大构件之SimpleThreadPool及其四种配置方案 第六节: 六类Calander处理六种不同的时间场景 第五节: Quartz.Net五大构件之Trigger的四大触发类 第三节: Quartz.Net五大构件之Scheduler(创建、封装、基本方法等)和Job(创建、关联
第九节: 利用RemoteScheduler实现Sheduler的远程控制 一. RemoteScheduler远程控制 1. 背景: 在A服务器上部署了一个Scheduler,我们想在B服务器上 ...
- 第四百零六节,自定义用户表类来继承Django的用户表类,
第四百零六节,自定义用户表类来继承Django的用户表类, models.py from django.db import models # Create your models here. from ...
- ASP.NET MVC深入浅出(被替换) 第一节: 结合EF的本地缓存属性来介绍【EF增删改操作】的几种形式 第三节: EF调用普通SQL语句的两类封装(ExecuteSqlCommand和SqlQuery ) 第四节: EF调用存储过程的通用写法和DBFirst模式子类调用的特有写法 第六节: EF高级属性(二) 之延迟加载、立即加载、显示加载(含导航属性) 第十节: EF的三种追踪
ASP.NET MVC深入浅出(被替换) 一. 谈情怀-ASP.NET体系 从事.Net开发以来,最先接触的Web开发框架是Asp.Net WebForm,该框架高度封装,为了隐藏Http的无状态 ...
- Java基础知识二次学习--第六章 常用类
第六章 常用类 时间:2017年4月26日16:14:49~2017年4月26日16:56:02 章节:06章_01节~06章_06节 视频长度:20:57+1:15+8:44+1:26+11:2 ...
- delphi 线程教学第六节:TList与泛型
第六节: TList 与泛型 TList 是一个重要的容器,用途广泛,配合泛型,更是如虎添翼. 我们先来改进一下带泛型的 TList 基类,以便以后使用. 本例源码下载(delphi XE8版本) ...
- 第四百一十六节,Tensorflow简介与安装
第四百一十六节,Tensorflow简介与安装 TensorFlow是什么 Tensorflow是一个Google开发的第二代机器学习系统,克服了第一代系统DistBelief仅能开发神经网络算法.难 ...
- 第三百九十六节,Django+Xadmin打造上线标准的在线教育平台—其他插件使用说,自定义列表页上传插件
第三百九十六节,Django+Xadmin打造上线标准的在线教育平台—其他插件使用说,自定义列表页上传插件 设置后台列表页面字段统计 在当前APP里的adminx.py文件里的数据表管理器里设置 ag ...
- 第三百四十六节,Python分布式爬虫打造搜索引擎Scrapy精讲—Requests请求和Response响应介绍
第三百四十六节,Python分布式爬虫打造搜索引擎Scrapy精讲—Requests请求和Response响应介绍 Requests请求 Requests请求就是我们在爬虫文件写的Requests() ...
- NHibernate.3.0.Cookbook第一章第六节Handling versioning and concurrency的翻译
NHibernate.3.0.Cookbook第一章第六节Handling versioning and concurrency的翻译 第一章第二节Mapping a class with XML ...
随机推荐
- LeetCode算法题-Design HashSet(Java实现)
这是悦乐书的第298次更新,第317篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第166题(顺位题号是705).不使用任何内建的hash表库设计一个hash集合,应包含 ...
- linux环境快速编译安装python3.6
一.下载python3源码包 cd /tmp/wget https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tgz 二.下载python3编译的依 ...
- Windows Service 学习系列(二):C# windows服务:安装、卸载、启动和停止Windows Service几种方式
一.通过InstallUtil.exe安装.卸载.启动.停止Windows Service 方法一 1.以管理员身份运行cmd 2.安装windows服务 切换cd C:\Windows\Micros ...
- linux vi粘贴格式易错乱
对于一些冗长的代码完全可以粘贴的时候,vi粘贴所有格式全部错乱,完全无法阅读. 解决办法:esc进入命令行模式后,输入 :set paste,然后再i进入粘贴编辑模式,即可正常复制并保留原有格式-
- springboot+mybatis+pagehelper
springboot+mybatis+pagehelper整合 springboot 版本2.1.2.RELEASE mybatis 版本3.5 pagehelper 版本5.18 支持在map ...
- Docker概述
Docker概述 Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化.容器是完全可以使用沙盒机制,互 ...
- 在Mac OS X下使用Apache、PHP、MySQL、Netbeans、Yii
本文环境: Mac OS X:10.8.4 Apache:2.2.22 PHP:5.3.15 Netbeans:7.3.1 Yii:1.1.14 Mac OS X是内置了Apache服务器的,不过默认 ...
- 固件远程更新之STARTUPE2原语(fpga控制flash)
作者:九章子 来源:CSDN 原文:https://blog.csdn.net/jiuzhangzi/article/details/79471365 有的项目需要远程更新固件,更新完成后断电.重启即 ...
- 【原创】新说Mysql事务隔离级别
引言 大家在面试中一定碰到过 说说事务的隔离级别吧? 老实说,事务隔离级别这个问题,无论是校招还是社招,面试官都爱问!然而目前网上很多文章,说句实在话啊,我看了后我都怀疑作者弄懂没!因为他们对可重复读 ...
- python对 if __name__=='__main__'的理解
对于学过其他编程语言的人来说都知道程序都是从main函数开始执行的,而对于python来说他并没有主函数,他不像其他语言需要需要转化为二进制文件 然后才能执行,他时通过翻译器从第一行开始逐行执行,所以 ...