背景介绍及其使用

  该章节主要补充介绍,在前一章四类触发器的基础上配合六大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处理六种不同的时间场景的更多相关文章

  1. 第九节: 利用RemoteScheduler实现Sheduler的远程控制 第八节: Quartz.Net五大构件之SimpleThreadPool及其四种配置方案 第六节: 六类Calander处理六种不同的时间场景 第五节: Quartz.Net五大构件之Trigger的四大触发类 第三节: Quartz.Net五大构件之Scheduler(创建、封装、基本方法等)和Job(创建、关联

    第九节: 利用RemoteScheduler实现Sheduler的远程控制   一. RemoteScheduler远程控制 1. 背景: 在A服务器上部署了一个Scheduler,我们想在B服务器上 ...

  2. 第四百零六节,自定义用户表类来继承Django的用户表类,

    第四百零六节,自定义用户表类来继承Django的用户表类, models.py from django.db import models # Create your models here. from ...

  3. ASP.NET MVC深入浅出(被替换) 第一节: 结合EF的本地缓存属性来介绍【EF增删改操作】的几种形式 第三节: EF调用普通SQL语句的两类封装(ExecuteSqlCommand和SqlQuery ) 第四节: EF调用存储过程的通用写法和DBFirst模式子类调用的特有写法 第六节: EF高级属性(二) 之延迟加载、立即加载、显示加载(含导航属性) 第十节: EF的三种追踪

    ASP.NET MVC深入浅出(被替换)   一. 谈情怀-ASP.NET体系 从事.Net开发以来,最先接触的Web开发框架是Asp.Net WebForm,该框架高度封装,为了隐藏Http的无状态 ...

  4. 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 ...

  5. delphi 线程教学第六节:TList与泛型

    第六节: TList 与泛型   TList 是一个重要的容器,用途广泛,配合泛型,更是如虎添翼. 我们先来改进一下带泛型的 TList 基类,以便以后使用. 本例源码下载(delphi XE8版本) ...

  6. 第四百一十六节,Tensorflow简介与安装

    第四百一十六节,Tensorflow简介与安装 TensorFlow是什么 Tensorflow是一个Google开发的第二代机器学习系统,克服了第一代系统DistBelief仅能开发神经网络算法.难 ...

  7. 第三百九十六节,Django+Xadmin打造上线标准的在线教育平台—其他插件使用说,自定义列表页上传插件

    第三百九十六节,Django+Xadmin打造上线标准的在线教育平台—其他插件使用说,自定义列表页上传插件 设置后台列表页面字段统计 在当前APP里的adminx.py文件里的数据表管理器里设置 ag ...

  8. 第三百四十六节,Python分布式爬虫打造搜索引擎Scrapy精讲—Requests请求和Response响应介绍

    第三百四十六节,Python分布式爬虫打造搜索引擎Scrapy精讲—Requests请求和Response响应介绍 Requests请求 Requests请求就是我们在爬虫文件写的Requests() ...

  9. NHibernate.3.0.Cookbook第一章第六节Handling versioning and concurrency的翻译

    NHibernate.3.0.Cookbook第一章第六节Handling versioning and concurrency的翻译   第一章第二节Mapping a class with XML ...

随机推荐

  1. 4.14Python数据处理篇之Matplotlib系列(十四)---动态图的绘制

    目录 目录 前言 (一)需求分析 (二)随机数的动态图 1.思路分析: 2.源代码: 2.输出效果: 目录 前言 学习matplotlib已经到了尾声,没有必要再继续深究下去了,现今只是学了一些基础的 ...

  2. hashlib模块

    老师博客:http://www.cnblogs.com/Eva-J/articles/7228075.html#_label12 摘要算法 什么是摘要算法呢?摘要算法又称哈希算法.散列算法.它通过一个 ...

  3. .NET CORE学习笔记系列(1)——ASP.NET MVC Core 介绍和项目解读

    ASP.NET MVC Core 项目文件夹解读 一.项目文件夹总览 1.1.Properties——launchSettings.json 启动配置文件,你可以在项目中“Properties”文件夹 ...

  4. kernel笔记——定时器与时间管理

    内核中时钟主要完成以下作用: 记录系统运行时间 完成时间相关的统计功能,如cpu占用率等 定时功能,设定某个进程一段时间后完成某项任务 为实现以上功能,硬件以及内核提供了不同类型的时钟. RTC 实时 ...

  5. javaScript判断手机型号

    window.onload = function () { alert("1"); var u = navigator.userAgent; if (u.indexOf('Andr ...

  6. [APIO2014]序列分割

    嘟嘟嘟 复习一下斜率优化,感觉已经忘得差不多了-- 这题切入点在与答案跟切的顺序无关. 证明就是假如有三段权值分别为\(x, y, z\),那么这两刀不管按什么顺序切,得到的结果都是\(xy + xz ...

  7. OpenCV——图像处理入门:膨胀与腐蚀、图像模糊、边缘检测

    全部外部依赖项: opencv_aruco341d.lib opencv_bgsegm341d.lib opencv_calib3d341d.lib opencv_bioinspired341d.li ...

  8. OpenMP并行程序设计——for循环并行化详解

    在C/C++中使用OpenMP优化代码方便又简单,代码中需要并行处理的往往是一些比较耗时的for循环,所以重点介绍一下OpenMP中for循环的应用.个人感觉只要掌握了文中讲的这些就足够了,如果想要学 ...

  9. 乐观锁vs悲观锁

    引言 为什么需要锁(并发控制) 在并发的环境中,会存在多个用户同时更新同一条数据,这时就会产生冲突. 冲突结果: 丢失更新:一个事务的更新覆盖了其它事务的更新结果,就是所谓的更新丢失. 脏读:当一个事 ...

  10. 【zabbix教程系列】一、初识zabbix

    一.zabbix是什么? Zabbix是最终的企业级软件,专为实时监控从数以万计的服务器,虚拟机和网络设备收集的数百万个指标而设计. 二.zabbix能做什么? 监控任何事物,为任何类型的IT基础设备 ...