Quartz 第六课 CronTrigger(官方文档翻译)

CronTriggers使用的频率比SimpleTrigger跟高。如果需要schedule 中触发Job的方式类似于日历的形式而不是一个确定的是时间间隔,那就需要使用CronTrigger。

对于CronTrigger,你可以触发Schedule,例如每个周五中午或者每个工作日的下午9:30或者在早上9:00至10:;之间每五分钟执行一次在每个周一、周二、周五执行。

不紧如此,SampleTrigger和CronTriggerd都有一个启动时间和一个可选的结束时间来停止。

Cron Expressions

Cron-Expressions被用于配置CronTrigger实例。Cron-Expressions是一串字符串。由七个部分组成,用来详细描述时间调度。各个部分内容用空格分开,各部分表示如下:

  1. Seconds
  2. Minutes
  3. Hours
  4. Day-of-Month
  5. Month
  6. Day-of-Week
  7. Year (optional field

用一个简单的例子说明:“0 0 12 ? * WED”。这段字符串表达的意思是每个星期二的12:00.

个别的sub-expressions可以包含一个范围组合。例如:day of week 字段,在之前的例子中可以写成“MON-FRI”,“MON,WED,FRI”或者是“MON,WED,SAT”。

各部分使用通配符来表示这个字段所有的可能值意思显而易见在Month字段上表示所有月份,在day of week表示每个周的所有天数。

每个字段都有自己的值限定。这些限定值得范围是相当明显-在分钟和秒的字段上范围是0-59。在Hours字段上范围为0-23。在day of month 字段上范围是0-31但是这需要依据具体的月份来计算。Month的有效值为0-11.。当然也可以使用JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV and DEC。day of week 有效范围是1-7(表示星期日)也可以使用SUN, MON, TUE, WED, THU, FRI and SAT.表示。

‘/’用来表示一个特殊的增长间隔。例如在Minutes字段上写入0/15,表示的意思是每15执行,在0分钟的时候启动。如果写的3/20则表示每20分钟执行一次,在3分钟钟后启动,其工作的时间是3,23,43.

‘?’可以用在 day-of-month and day-of-week字段上面。用来表示没有具体值得意思。如果你需要在这两个字段做一些特殊的操作这个符号是非常有用的,详情请看CronTrigger API documentation。

‘L’容许用在day-of-month and day-of-week 字段上面。这个字符在两个字段上面表示的意思不太一样。例如:在day-of-month上表示是这个月的最后的一天。如果使用在day-of-week表示的7(SAT)。如果在L前面带有其它具体值,则表示某个月的最后的某一天。例如6L或者FRIL表示的是该月的最后一个星期5.当你使用L的时候,你需要知道它不会指定一个特殊的具体指或者一个范围,而是一个不确定的值。

‘W’表示的是最接近给定天的工作日(星期一到星期五)。例如你写是15W在day-of-month则表示最接近该月15的工作日。

“#”被用来指定该月的“第n”XXX工作日。例如,设置值“6#3”或者“FRI#3”在day-of-week,则表示这个月的第三个星期五”。

Example Cron Expressions

下面给出一些具体表达式例子,更具体的介绍见the API documentation for CronTrigger。

1、每五分钟执行一次

"0 0/5 * * * ?"

2、每五分钟执行一次,十秒等待

"10 0/5 * * * ?"   10:00:10  10:05:10

3、每周一和周五的10:30 11:30 12:30 13:30执行一次

"0 30 10-13 ? * WED,FRI"

4、每月的5号与20号的8-9点之间每30分钟执行一次

"0 0/30 8-9 5,20 * ?"

注意:有些触发机制过于复杂,例如每五分钟执行一次在每月的8-9点,并且在13至22点没20分钟执行一次,对于这样的触发记住,可以装件两个单独的触发器来工作相同的内容。

Building CronTriggers

构建CronTrigger具体实例,使用的是TriggerBuilder (用来配置Trigger主要的内容)和WithCronSchedule(用来配置Trigger的特殊需要内容) 扩展方法。

1、创建一个每天的8-17点之间每两分钟执行一次

1 trigger = TriggerBuilder.Create()
2     .WithIdentity("trigger3", "group1")
3     .WithCronSchedule("0 0/2 8-17 * * ?")
4     .ForJob("myJob", "group1")
5     .Build();

2、构建一个每天10:42执行一次

1 // we use CronScheduleBuilder‘s static helper methods here
2 trigger = TriggerBuilder.Create()
3     .WithIdentity("trigger3", "group1")
4     .WithSchedule(CronScheduleBuilder.DailyAtHourAndMinute(10, 42))
5     .ForJob(myJobKey)
6     .Build();

或者

1 trigger = TriggerBuilder.Create()
2     .WithIdentity("trigger3", "group1")
3     .WithCronSchedule("0 42 10 * * ?")
4     .ForJob("myJob", "group1")
5     .Build();

3、构建一个每个星期二的10:42,使用非系统默认的时区

1 trigger = TriggerBuilder.Create()
2     .WithIdentity("trigger3", "group1")
3     .WithSchedule(CronScheduleBuilder
4         .WeeklyOnDayAndHourAndMinute(DayOfWeek.Wednesday, 10, 42)
5         .InTimeZone(TimeZoneInfo.FindSystemTimeZoneById("Central America Standard Time")))
6     .ForJob(myJobKey)
7     .Build();

或者

1 trigger = TriggerBuilder.Create()
2     .WithIdentity("trigger3", "group1")
3     .WithCronSchedule("0 42 10 ? * WED", x => x
4         .InTimeZone(TimeZoneInfo.FindSystemTimeZoneById("Central America Standard Time")))
5     .ForJob(myJobKey)
6     .Build();

CronTrigger Misfire Instructions

下面的是CronTrigger MisFire。详情见 API documentation

  • MisfireInstruction.IgnoreMisfirePolicy
  • MisfireInstruction.CronTrigger.DoNothing
  • MisfireInstruction.CronTrigger.FireOnceNow

所有触发器有可使用的MisfireInstrution.SmartPolicy指令,并且该指令也是所有触发类型的默认。在“明智的政策”指令被CronTrigger解释为MisfireInstruction.CronTrigger.FireOnceNow。对于CronTrigger.UpdateAfterMisfire()方法的API文档解释了这种行为的具体细节。

当建立CronTriggers,您指定的misfire 作为cron的计划的一部分(通过WithCronSchedule扩展方法):

1 trigger = TriggerBuilder.Create()
2     .WithIdentity("trigger3", "group1")
3     .WithCronSchedule("0 0/2 8-17 * * ?", x => x
4         .WithMisfireHandlingInstructionFireAndProceed())
5     .ForJob("myJob", "group1")
6     .Build();
时间: 2024-08-04 16:17:03

Quartz 第六课 CronTrigger(官方文档翻译)的相关文章

Quartz 第五课 SimpleTriggers 官方文档翻译

对于SimpleTrigger你需要知道它的启动总是在一个特殊的时间点或者有你设置的重复时间段中.直白来说,如果你想在2005年1月13日,正好上午11时23分54秒触发,然后执行五次,每十秒钟. 从这个描述中你并没有发现什么特别的内容对于SimpleTrigger:开启时间,结束时间.重复次数.重复时间段.对于这些你期望的内容,仅用两个注意来说明. 这个重复的次数可以是0.任意正整数.常数.SimpleTrigger. RepeatIndefinitely(无限重复).这重复间隔属性值必须是T

[译]Quartz.NET 框架 教程(中文版)2.2.x 之第六课 CronTrigger

第六课 CronTrigger CronTrigger比SimpleTrigger更常用,当你需要一个基于日历般概念的作业调度器,而不是像SimpleTrigger那样精确指定间隔时间. 使用SimpleTrigger,你可以这样指定触发时间表例如“每周五的中午”,或是“每周末的上午9:30”,甚至是“一月份每周一.三.五上午9:00到10:00之间每5分钟”. 虽然如此,跟SimpleTrigger一样,CronTrigger也需要指定startTime让调度器生效,指定endTime让调度器

iOS Communicating with Authenticating HTTP Servers 与HTTP服务器通信认证 官方文档翻译(六)

原文地址:developer 召集翻译人手:请加入486111671  ios 官方文档翻译                                                            与HTTP服务器通信认证 本章描述了如何与HTTP服务器身份验证利用CFHTTPAuthentication API.它解释了如何找到匹配验证对象和凭证,将它们应用到一个HTTP请求,并将它们存储供以后使用. 一般来说,如果一个HTTP服务器将返回一个401或407响应后你的HTTP请求

2018-08-24 第三十六课

第三十六课 非关系统型数据库-mangodb 目录 二十四 mongodb介绍 二十五 mongodb安装 二十六 连接mongodb 二十七 mongodb用户管理 二十八 mongodb创建集合.数据管理 二十九 php的mongodb扩展 三十 php的mongo扩展 三十一 mongodb副本集介绍 三十二 mongodb副本集搭建 三十三 mongodb副本集测试 三十四 mongodb分片介绍 三十五 mongodb分片搭建 三十六 mongodb分片测试 三十七 mongodb备份

第十六课----Rsync数据同步工具

1.1.1 什么是Rsync?Rsync是一款开源的,快速的,多功能的,可实现全量及增量的本地或远程数据同步备份的优秀工具.Rsync软件适用于unix/linux/windows等多种操作系统平台.1.1.2 Rsync简介? Rsync英文全称Remote synchronization,从软件的名称就可以看出来,Rsync具有可使本地和远程两台主机之间的数据快速复制同步镜像,远程备份的功能,这个功能类似ssh带的scp命令,但又优于scp命令的功能,scp每次都是全量拷贝,而rsync可以

第六课 简易网页制作展示

<head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>无标题文档</title> <link href="test1 html.css" rel="stylesheet" type="text/css" /> </head>

Swift 集合类型(Collection Type) 之 字典(dictionary)(官方文档翻译及总结)

Swift语言提供经典的数组和字典两种集合类型来存储集合数据.数组和字典中存储的数据值类型必须明确.这意味着我们不能把不正确的数据类型插入其中.Swift对显式类型集合的使用确保了我们的代码对工作所需要的类型非常清楚.也让我们在开发中可以早早的找到任何的类型不匹配错误.如果你用变量(var)创建的集合,这些集合就是可变的(增删改).如果用常理创建的,这些集合是不能被操作的. 注意: 如果集合的元素是不变的,那就将集合声明为常量.这样Swift编译器能对你创建的集合做性能优化. 1. 数组(arr

【C语言探索之旅】 第二部分第六课:创建你自己的变量类型

0 内容简介 1.课程大纲 2.第二部分第六课: 创建你自己的变量类型 3.第二部分第七课预告: 文件读写 课程大纲 我们的课程分为四大部分,每一个部分结束后都会有练习题,并会公布答案.还会带大家用C语言编写三个游戏. C语言编程基础知识 什么是编程? 工欲善其事,必先利其器 你的第一个程序 变量的世界 运算那点事 条件表达式 循环语句 实战:第一个C语言小游戏 函数 练习题 习作:完善第一个C语言小游戏 C语言高级技术 模块化编程 进击的指针,C语言王牌 数组 字符串 预处理 创建你自己的变量

BeagleBone Black板第六课:C++编程控制GPIO基础

BBB板第六课:C++编程控制GPIO基础 在一上课我们通过Shell脚本编程实现了对GPIO端口的简单输出控制,实现对两个LED指示灯的交替点亮和关闭,接下来的一两节课,将通过C++程序来实现Shell脚本的功能.为了实现对应的程序控制,我查阅了好多资料,测试过程中发觉网上的一些程序套用过来总是出现各种各样的编译错误,压根就控制不了BBB板,不知是我的BBB板太新,还是以前的程序太旧.最后还是从头开始,重新研究BBB板的文件系统,找出头文件,找出所有相关的函数,终于实现GPIO的C++程序控制