`
no_bao
  • 浏览: 316594 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

Quartz使用指南(五)-----Cron触发器(CronTrigger)

阅读更多

<!--[if !supportLists]-->

       <!--[endif]-->Cron触发器(CronTrigger

     CronTrigger的功能比SimpleTrigger强大,它可以实现基于类似于日历概念的作业调度,而不是单单基于一定的时间间隔的。
     使用CronTrigger,我们能够定义如下类型的日历型的Schedule:每个星期五的中午,每个周末的早上930,或者每周一、周三和周五的早上9001000每隔5分钟。

<!--[if !supportLists]-->

        <!--[endif]-->Cron表达式(Cron Expressions

     Cron-Expressions用于配置CronTrigger实例,Cron-Expressions是一串字符串,实际上它由六个子字符串组成,子字符串间采用空格分离,从左到右分别代表:Seconds Minutes Hours Day-of-Month Month Day-of-Week
字符串“0 0 12 ? * WED”是一个完整的Cron-Expressions例子,它所表达的意思是:每周三早上1200
     各个子表达式的值可以是一个范围或者列表,比如,上个例子中的Day-of-Week域的值“WED”可以用“MON-FRI”、“MON,WED,FRI”或者“MON-WED,SAT”来替代。
     所有子表达式都有指定各自的取值范围,下面对Cron-Expressions的各个子表达式和取值范围进行说明:
子表达式
允许的值
允许的特殊字符
Seconds
0-59
 * /
Minutes
0-59
 * /
Hours
0-23
 * /
Day-of-Month
1-31
 * ? / L W 
Month
1-12JAN-DEC
 * /
Day-of-Week
1-7SUN-SAT
 * ? / L #
Years(Optional)
为空或19702099
 * /

‘-’字符表示:值的范围,1012Hours域中表示为:101112

*’字符表示:可以为任意值,‘*’在Minutes域中表示为:每分钟;

/’字符表示:一个左边的数值是右边基数的递增值,‘0/15’在Seconds域中表示为:第0153045秒,‘5/15 Seconds域中表示为:第5203550

‘?’字符表示:没有对该域指定值,可以为任意值,不对该域进行限制,‘?’只能用在Day-of-MonthDay-of-Week域中;

L’字符表示:‘L’是取‘Last’的第一个字母,也只能用在Day-of-MonthDay-of-Week域中,在Day-of-Month域中的意思是:月份的最后一天,在Day-of-Week域中的意思是:‘7’或‘SAT’,但是在Day-of-Week域中用在另一个值后的意思是:该月的最后一个星期几,如:‘6L’为:该月的最后一个星期五;

W’字符表示:‘W’是取‘Weekday’的第一个字母,只能用在Day-of-Month域中,‘W’代表了最接近给定那一天的工作日,如:在Day-of-Month域中把值设为:15W,表示的意思是:该月的第15日最接近的工作日,所以当第15日是周六时,Trigger将在第14日的周五执行触发,当第15日是周天时,Trigger将在第16日的周一执行触发,当第15日是工作日时,Trigger将在第15日的当天执行触发;然而在Day-of-Month域中把值设为:1W,当第1日是周六时,Trigger将在第3日的周一执行触发,因为它不会跨越月份的范围,‘W’字符只能是该月中的一天,而不是一个范围或天数的列表;在Day-of-Month 域中可以结合使用‘L’和‘W’字符‘LW’,‘LW’表示:月份的最后一个工作日;

#’字符表示:月份的第几个星期几,只能用在Day-of-Week域中,如:在Day-of-Week域中把值设为:6#3,表示的意思是:该月的第3个星期5day 6=Friday and “#3”=the 3rd one in the month);2#1表示的意思是:该月的第1个星期14#5表示的意思是:该月的第5个星期3;需要注意:不能把值设为“#5”,因为一个月中不可能有第5个星期3,如果这样设置,将导致该月无法执行触发;

下面举一些完整的Cron- Expressions例子:

 

表达式

意思

0 0 12 * * ?

每天12:00执行触发

0 15 10 ? * *

每天10:15执行触发

0 15 10 * * ?

每天10:15执行触发

0 15 10 * * ? *

每天10:15执行触发

0 15 10 * * ? 2005

2005年的每天10:15执行触发

0 * 14 * * ?

每天从14:0014:59每隔1分钟执行一次触发

0 0/5 14 * * ?

每天从14:0014:59每个5分钟执行一次触发

0 0/5 14,18 * * ?

每天从14:0014:5918:0018:59每隔5分钟执行一次触发

0 0-5 14 * * ?

每天从14:0014:05每隔1分钟执行一次触发

0 10,44 14 ? 3 WED

3月的每个星期314:1014:44分别执行一次触发

0 15 10 15 * ?

每月的第1510:15执行一次触发

0 15 10 L * ?

每月最后一天的10:15执行一次触发

0 15 10 ? * 6L

每月的最后一个星期510:15执行一次触发

0 15 10 ? * 2002-2005

2002200320042005年的每个月的最后一个星期510:15执行一次触发

0 15 10 ? * 6#3

每月的第3个星期510:15执行一次触发

Schedule中要求比较复杂,采用单个的Trigger无法实现时,可以配置多个的Trigger来实现,比如:每天的9:0010:00之间每隔5分钟执行一次触发,并且在每天的13:0022:00之间每隔20分钟执行一次触发,配置2Trigger并把2配置好的2Trigger注册到相同的Job中就可以很简单的实现上述情况。

分享到:
评论

相关推荐

    Quartz中的cron-like表达式解析 cron-like unix-like c#

    在C#中使用Quartz的cron-like表达式,首先需要导入`Quartz`库,然后创建一个`CronTrigger`实例,将表达式作为参数传入。例如: ```csharp using Quartz; ISchedule trigger = TriggerBuilder.Create() ....

    quartz-1.6.0.jar和quartz-all-1.6.0.jar

    关于触发器,CronTrigger允许我们根据cron表达式设置触发时间,这种表达式能精确到秒,非常适合按周期性的计划执行任务。而SimpleTrigger则适用于一次性或者基于固定间隔重复执行的任务。 总的来说,Quartz是一个...

    quartz-cron-generator:Quartz Cron Generator-为Quartz.NET库的cron调度程序生成cron表达式

    在Quartz.NET中,CronTrigger类使用Cron表达式来定义触发器的执行时间。Cron表达式由7个子表达式组成,分别代表秒、分钟、小时、日、月份中的日期、月份和星期几。例如,“0 0 12 * * ?”表示每天中午12点触发。然而...

    quartz-2.2.3-distribution.tar.gz

    2. **灵活的调度**:Quartz支持多种类型的触发器,如简单触发器、cron触发器等,以满足不同的调度需求。Cron触发器允许按照类似于Unix cron表达式的方式设置任务执行时间。 3. **持久性**:Quartz可以将作业和触发器...

    quartz-all-1.6.0.jar包定时任务jar

    Quartz提供多种Trigger类型,如SimpleTrigger(一次性执行或按固定间隔重复执行)、CronTrigger(根据Cron表达式执行,类似于Linux的crontab)等。开发者可以根据需求选择合适的Trigger类型,并设置其属性。 3. **...

    quartz.zip -- || --

    它可以是简单触发器(一次性执行)或cron触发器(按照特定的时间模式周期性执行)。 3. **作业详情(Job Details)**:作业详情包含作业的实例化信息,如作业类、作业组名等,并可以与一个或多个触发器关联。 4. **...

    quartz 触发器表达式生成器

    CronTrigger 使用Cron表达式来定义任务的执行周期,而这种表达式可能对一些开发者来说比较复杂。这就是"quartz 触发器表达式生成器"发挥作用的地方。 这个工具的主要目的是帮助开发者方便地生成准确的 Cron 表达式...

    Quartz-JOB-Framework 中文版和QUartz开发指南 .zip

    "Quartz开发指南.pdf"则提供了更深入的开发指导,这通常包括实际编程示例,帮助开发者理解如何在项目中集成Quartz,编写作业类,定义触发器,以及处理并发和恢复策略。书中可能还有关于如何使用书签功能快速定位到...

    quartz和spring-quartz

    Quartz提供了多种Trigger类型,如SimpleTrigger(简单触发器)用于一次性或间隔执行,CronTrigger(cron触发器)则可以按照预定义的cron表达式周期性执行。 3. **Scheduler**: Scheduler是整个框架的管理者,它负责...

    Quartz Cron表达式生成器(.NET) 附上源码

    `CronTrigger`类就是用来创建基于Cron表达式的触发器,你可以将生成的Cron表达式传递给`CronTrigger`的构造函数来创建触发器。 了解并使用Quartz Cron表达式生成器,可以帮助我们更高效地使用Quartz.NET进行定时...

    quartz quartz-1.8.6 dbTables 建表sql

    3. **QRTZ_CRON_TRIGGERS**:如果使用的是CronTrigger,那么这个表会存储与Cron表达式相关的配置,比如Cron表达式本身,以及是否需要在特定时间进行触发。 4. **QRTZ_SIMPLE_TRIGGERS**:对于使用SimpleTrigger的...

    quartz-1.6.6 教程,代码

    - 文档可能包含 Quartz 的使用指南、API 参考以及常见问题解答,对于初学者来说是非常宝贵的资源。 - 特别关注 `JobBuilder` 和 `TriggerBuilder`,它们提供了构建 Job 和 Trigger 的简便方式。 6. **应用场景** ...

    Quartz Cron表达式

    ### Quartz Cron表达式详解 #### 一、CronTrigger与SimpleTrigger对比 在Quartz调度器中,`CronTrigger`是一种非常强大的触发机制,它能够根据复杂的日历规则来调度任务,相比于`SimpleTrigger`而言更为灵活。如果...

    spring2.0 Quartz 执行每天定时任务 建议用quartz-all-1.8.4.jar更稳定,兼容性更好

    Trigger定义了任务的执行时间,Spring提供了` CronTrigger`,允许你使用Cron表达式定义复杂的定时规则,例如创建一个每天执行的Trigger,你可以设置Cron表达式为`0 0 0 * * ?`,这表示每天的0点0分执行。 为了将Job...

    quartz-2.3.0-distribution.tar.gz

    Quartz 提供了多种 Trigger 类型,如 SimpleTrigger(单次或重复执行)和 CronTrigger(基于 Cron 表达式的时间间隔执行)。 3. **Scheduler(调度器)**:负责管理和执行 Jobs 以及 Triggers。通过 Scheduler 实例...

    Quartz-Job-Scheduling-Framework-中文版-V0.9.1.zip

    内容提要:引入 Quartz CronTrigger 及简单使用 CronTrigger 来部署一个 Job 第五章. Cron 触发器及相关内容 (第二部分) 内容提要:详细介绍了 cron 表达式的格式和像 , - * ? / L W C # 特殊符号的使用 第五章. ...

    quartz使用cron表达式的实例

    本文将深入探讨如何使用Quartz配合cron表达式来实现定时任务的实例。 首先,我们要理解cron表达式。Cron表达式是Unix系统中的定时任务调度工具,也被Quartz框架所采用。它由六个或七个子表达式组成,每个子表达式...

    quartz-2.2.3-distribution.zip

    - **Trigger**:触发器,决定何时执行Job,有SimpleTrigger(简单触发器)和CronTrigger(cron表达式触发器)等。 - **Calendar**:可以用于定义任务执行的排除时间,比如节假日不执行。 - **JobDetail**:存储...

    Android studio下的quartz工程

    你可以使用`org.quartz.CronTrigger`或`org.quartz.SimpleTrigger`来创建。例如,以下代码创建了一个基于cron表达式的触发器,每天的10点30分执行: ```java import org.quartz.CronScheduleBuilder; import org....

    Quartz_cron表达式

    Quartz支持多种触发器类型,其中最为灵活且功能强大的是CronTrigger,它允许用户通过Cron表达式来精确地定义作业的执行时间。 #### 二、Cron表达式格式与构成 Cron表达式是由6个(有时7个)由空格分隔的时间字段...

Global site tag (gtag.js) - Google Analytics