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

 

 

转载于:https://www.cnblogs.com/gsjlovenet/p/5912466.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/356725.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

centos 6.6 oracle 10g,centos 6.2 安装 oracle 10g 问题

问题一&#xff1a;正在启动 Oracle Universal Installer...正在检查安装程序要求...检查操作系统版本: 必须是redhat-3, SuSE-9, redhat-4, UnitedLinux-1.0, asianux-1or asianux-2未通过<<<<正在退出 Oracle Universal Installer。您可以在/tmp/OraInstall2002-…

查看本地文档的一些方法

1. 某目录下临时开web服务器 cd some_dir python -m SimpleHTTPServer 9090 9090手动指定的端口&#xff0c;然后使用http://localhost:9090来访问。下同&#xff0c;不赘述。 2. python文档 pydoc -p 9090 3. matlab文档 cd %MATLAB_DIR%\help # e.g. G:\soft\MATLAB\R2016a\…

oracle sql为null值,在SQL Server Oracle MySQL当数据库中查出某值为NULL怎么办

在SQL Server Oracle MySQL当数据库中查出某值为NULL怎么办?1、MSSQL: ISNULL()语法ISNULL ( check_expression , replacement_value )参数check_expression将被检查是否为 NULL的表达式。check_expression 可以是任何类型的。replacement_value在 check_expression 为 NULL时…

SQL入门语句之LIKE、GLOB和LIMIT

一、SQL入门语句之LIKE LIKE用来匹配通配符指定模式的文本值。如果搜索表达式与模式表达式匹配&#xff0c;LIKE 运算符将返回真&#xff08;true&#xff09;&#xff0c;也就是 1。这里有两个通配符与 LIKE 运算符一起使用,百分号&#xff08;%&#xff09;代表零个、一个或多…

vaadin_在Vaadin和JSF之间选择

vaadin随着最新版本的Primefaces 3.0的发布&#xff0c;JSF终于达到了前所未有的成熟度和实用性&#xff0c;使其与其他流行的Rich Internet Applications&#xff08;RIA&#xff09;选项面对面&#xff0c;例如Google Web Toolkit&#xff08;GWT&#xff09;&#xff0c;Ext…

windows server 2008 oracle 10g,一次不太愉快的Windows Server 2008 R2 SP1上安装ORACLE 10G经历...

华为服务器型号RH5885 V3&#xff0c;安装windows server 2008 r2, oracle 10g1、安装包要使用10204_vista_w2k8_x64_production_db.zip&#xff0c;不用102010_win64_x64_database.zip&#xff1b;2、DBCA创建数据库之前&#xff0c;关闭BIOS中Hyper-Threading [ALL] - [Disab…

通过OmniFaces缓存组件以编程方式缓存PrimeFaces图表

在这篇文章中&#xff0c;您将看到如何结合PrimeFaces和OmniFaces获得可缓存的图表。 为了使事情变得简单&#xff0c;我们将使用PrimeFaces 折线图。 对于这种图表&#xff0c;我们可以在页面中使用<p&#xff1a;chart />标记和一个简单的托管bean。 因此&#xff0c;在…

ReactNative——打包发布

1、生成一个签名密钥 ‘ keytool -genkey -v -keystore my-release-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000 ’ 生成一个my-release-key.keystore的密钥库文件 2、找到路径/android/app/src/main,并在该目录下新建assets文件夹 3、在工程…

oracle版本说明,Oracle版本说明

Oracle 的版本号很多&#xff0c;先看11g的一个版本号说明&#xff1a; 注意&#xff1a; 在Oracle 9.2 版本之后&#xff0c; oracle 的maintenance release number 是在Oracle的版本号很多&#xff0c;先看11g的一个版本号说明&#xff1a;注意&#xff1a;在Oracle 9.2版本之…

linux 用户 组区别吗,Linux系统的用户和用户组有什么区别

1.用户和用户组的概念Linux是一个多用户系统,要使用系统资源就必须在系统内拥有合法的用户账号, Linux系统可以存在多个用户,但是需要使用唯一的用户名来区分不同的用户,同时所有非系统用户都需要设置密码才可以登录到系统。和人类不同, Linux系统只能使用数字来记录用户。在实…

Opserver配置Redis、SqlServer监控

简介 Opserver是Stack Overflow的开源监控解决方案&#xff0c;由Stack Exchange发布&#xff0c;基于.NET框架构建。开源地址&#xff1a;https://github.com/opserver/Opserver 使用 github下载源代码编译后&#xff0c;发布至IIS&#xff0c;需要先修改Opserver/Config目录下…

Linux挂载多个文件夹读不出,FTP不显示Linux挂载文件夹怎么办?-处理FTP不显示Linux挂载文件夹的方案 - 河东软件园...

最近有位用户向小编反映&#xff0c;声称自己在Linux中使用vsftpd启FTP服务&#xff0c;并在FTP用户下挂载一个Windows的共享盘&#xff0c;但是登陆FTP后却无法显示该挂载的共享盘。出现这种问题真是令人十分头疼呢&#xff0c;想要快速解决这个问题又找不到合适的方法。该怎么…

以太坊智能合约Hello World示例程序

简介 以太坊(Ethereum)是一提供个智能合约(smart contract)功能的公共区块链(BlockChain)平台. 本文介绍了一个简单的以太坊智能合约的开发过程. 开发环境 在以太坊上开发应用&#xff0c;首先需要安装其客户端&#xff0c;本文使用基于Go语言的Geth, 其官网为https://github.c…

play 打包 模块_全新的Play模块资料库

play 打包 模块早在11月&#xff0c;我就Play框架的 Nicolas Leroux谈到了如何创建模块存储库。 他同意这将是一个好主意&#xff0c;但是时间不足使我无法开始。 在上周Google Play小组发生了暴风雨之后&#xff0c;我决定将其优先处理。 可以在几周内提供可用的原型。 概述&a…

linux统计字符串频数,Linux 统计某个字符串出现的次数

系列文章&colon;老项目的&num;iPhone6与iPhone6Plus适配&num;&lpar;持续更新中&comma;更新日期2014年10月12日 星期日 &rpar;本文永久地址为http://www.cnblogs.com/ChenYilong/p/4020399.html ,转载请注明出处. ********************************** .…

【读书笔记】《深入浅出nodejs》第五章 内存控制

海量请求长时间运行 -> 内存控制 -> 一切资源高效循环利用 1. V8的垃圾回收机制与内存限制 在Node中通过JavaScript使用内存时&#xff0c;只能使用部分内存&#xff08;64位系统下约1.4GB&#xff0c;32位系统下约为0.7GB&#xff09;。 在V8中&#xff0c;所有的JavaSc…

Java到LDAP教程(包括如何安装LDAP服务器/客户端)

本教程将向您展示如何编写Java代码以与LDAP交互。 但是在执行此操作之前&#xff0c;我们需要在计算机上设置LDAP服务器和客户端。 如果此时您不确定到底是什么LDAP&#xff0c;建议您参考这篇文章&#xff0c;其中提供了一个很好的定义示例。 &#xff08;简而言之&#xff0…

linux 嗅探密码,Linux下嗅探又一实例截取

在SecureCRT下利用rz命令上传我们用到的arpsniffer.c&#xff0c;然后编译&#xff1a;[rootbbs111 root]# gcc -I/usr/local/include -L/usr/local/lib -o arpsniffer arpsniffer.c -lpcap -lnet报错&#xff0c;可能是没装libnet的缘故&#xff0c;看说明Make: first you mus…

清北学堂十一培训酱油记

【day0】 要坐大巴去北京……&#xff08;没错是大巴&#xff01;&#xff09;然而说好的六点走&#xff0c;生生等到了七点……不过一路上还是很happy的&#xff01;某导游兔子 然而到华电之后&#xff0c;身子都散架了……这次的酒店在北农&#xff0c;感觉还可以&#xff0c…

在linux下赋予000权限,【linux】对于文件权限的理解

本篇博文旨在介绍linux下的权限问题&#xff1b;介绍了Linux下&#xff0c;查看权限、修改权限等方法&#xff1b;并通过分别在超级用户(root)和普通用户下进行测试&#xff0c;探索不同等级的用户进入目录需要的权限&#xff0c;以及进入后&#xff0c;显示和创建文件需要的权…