资讯专栏INFORMATION COLUMN

Quartz学习之Cron Expressions表达式

Mr_zhang / 967人阅读

摘要:请注意,触发器将不会在上午点开始,仅在,,和请注意,一些调度要求太复杂,无法用单一触发表示例如每上午至之间每分钟,下午至晚上点之间每分钟一次。在这种情况下的解决方案是简单地创建两个触发器,并注册它们来运行相同的作业。

表达式说明

Cron-Expressions 用于配置 CronTrigger的实例。Cron Expressions 是由七个子表达式组成的字符串,用于描述日程表的各个细节。这些子表达式用空格分隔,并表示:

Seconds

Minutes

Hours

Day-of-Month

Month

Day-of-Week

Year (可选字段,可以不写)

例:完整的Cron-Expressions的例子是字符串“0 0 12?* WED” - 这意味着“每个星期三下午12:00”。

单个子表达式可以包含范围和 / 或列表。例如,可以用“MON-FRI”,“MON,WED,FRI”或甚至“MON-WED,SAT”代替前一个(例如“WED”)示例中的星期几字段。

通配符(" "字符)可用于说明该字段的“每个”可能的值。因此,前一个例子的“月”字段中的“”字符仅仅是“每个月”。因此,“星期几”字段中的“*”显然意味着“每周的每一天”。

表达式的有效值

所有字段都有一组可以指定的有效值。
这些值应该是相当明显的:

秒和分钟的数字0到59,数小时的值0到23。

日期可以是1-31的任何值,但是您需要注意在给定的月份中有多少天。月份可以指定为0到11之间的值,或者使用字符串JAN,FEB,MAR,APR,MAY,JUN,JUL,AUG,SEP,OCT,NOV和DEC。

星期几可以指定为1到7(1 =星期日)之间的值,或者使用字符串SUN,MON,TUE,WED,THU,FRI和SAT。

字段 允许值 允许的特殊字符
0-59 , - * /
0-59 , - * /
小时 0-23 , - * /
日期 1-31 , - * ? / L W C
月份 1-12 或者 JAN-DEC , - * /
星期 1-7 或者 SUN-SAT , - * ? / L C #
年(可选) 留空 1970-2099 , - * /
字符说明

"," 字符

表示的是一种 “或”的关系。例如 小时的位置上面为: "14,18" 就是表示在 14点或者18点触发。

"-" 字符

表示的是 “至”的关系,就是从什么开始到什么结束。

"*" 字符

表示的是“每”的关系,就是说类似“每分钟”这样子。

"?"字符

"?" 字符是允许的日期(day-of-month)和星期几(day-of-week)字段。用于指定“无特定值”。当需要在两个字段中的一个字段中指定某个字符而不是另一个字段时,这很有用。请参阅下面的示例(和CronTrigger JavaDoc)以进行说明。

"/"

"/" 字符可用于指定值的增量。例如,如果在“分钟”字段中输入“0/15”,则表示“每隔15分钟,从零开始”。

如果在“分钟”字段中使用“3/20”,则意味着“每隔20分钟,从三分钟开始” - 换句话说,它与“分钟”中的“3,23,43”相同意思。请注意“ / 35”的细微之处并不代表“每35分钟” - 这意味着“每隔35分钟,从零开始” - 或者换句话说,与指定“0,35”相同。

"L"

"L" 字符允许用于日期( day-of-month )和星期几(day-of-week)字段。

这个字符对于 “last” 来说是短暂的,但是在这两个领域的每一个领域都有不同的含义。

例如:

"日期"字段(day-of-month)中的“L”表示“月的最后一天” - 1月31日,非闰年2月28日。

星期几(day-of-week)字段,它只是意味着“7”或“SAT”。但是如果在星期几的字段中再次使用这个值,就意味着“最后一个月的xxx日”,例如“6L”或“FRIL”都意味着“月的最后一个星期五”。您还可以指定从该月最后一天的偏移量,例如“L-3”,这意味着日历月份的第三个到最后一天。

当使用"L"选项时,重要的是不要指定列表或值的范围,因为您会得到混乱/意外的结果。

"W"

"W" 用于指定最近给定日期的工作日(星期一至星期五)。例如,如果要将“15W”指定为月日期字段的值,则意思是:“最近的平日到当月15日”。

"#"

"#"用于指定本月的“第n个”XXX工作日。例如,“星期几”字段中的“6#3”或“FRI#3”的值表示“本月的第三个星期五”。

Cron Expressions示例

每天上午10:15

0 15 10 ? * *
// 或者
0 15 10 * * ?
// 或者
0 15 10 * * ? *

每天中午12点触发

0 0 12 * * ?

每天的14点整至14点59份55秒,以及每天的18点整至18点59份55秒,每五秒钟执行一次

0/5 * 14,18 * * ?

每5分钟就会触发一次

0 0/5 * * *?

每5分钟触发一次,分钟后10秒(即上午10时10分,上午10:05:10等)

10 0/5 * * *?

在每个星期三和星期五的10:30,11:30,12:30和13:30创建触发器的表达式

0 30 10-13?* WED,FRI

每个月5日和20日上午8点至10点之间每半小时触发一次。请注意,触发器将不会在上午10点开始,仅在8:00,8:30,9:00和9:30

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

请注意,一些调度要求太复杂,无法用单一触发表示 - 例如“每上午9:00至10:00之间每5分钟,下午1:00至晚上10点之间每20分钟”一次。在这种情况下的解决方案是简单地创建两个触发器,并注册它们来运行相同的作业。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/71206.html

相关文章

  • Quartz习之入门

    摘要:触发器也可以给予名称和放置在组中,以方便地将它们调度内组织。作业可以被添加到所述调度器一次,而是具有多个触发器注册。调度类链接工作和触发器到一起,并执行它。 简介 Quartz是一个开源的作业调度框架,可以让计划的程序任务一个预定义的日期和时间运行。Quartz可以用来创建简单或复杂的日程安排执行几十,几百,甚至是十万的作业数。官方链接,戳这里 Quartz是什么? 作业调度库 Qua...

    Pandaaa 评论0 收藏0
  • Quartz初级教程

    摘要:是一个任务日程管理系统,一个在预先确定被纳入日程的时间到达时,负责执行或者通知其他软件组件的系统。核心接口核心调度器任务任务描述触发器和是同时相互依赖存在的,和触发器一起注册到核心调度器。 一、Quartz简介 1. Quartz Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用。Q...

    lncwwn 评论0 收藏0
  • Quartz习之多作业、监听

    摘要:多作业例子在这个例子中,我们将介绍如何通过多个作业。在调度框架中,每个作业将被连接到一个唯一的触发,并且由调度器运行它。备注说明在中,一个触发器触发多个作业是不可以的。第一步创建个作业,,和。 多作业例子 在这个例子中,我们将介绍如何通过Quartz API 多个作业。在Quartz调度框架中,每个作业将被连接到一个唯一的触发,并且由调度器运行它。 备注说明:在 Quartz 中,一个...

    miracledan 评论0 收藏0
  • Quartz习之常用Trigger方法记录

    摘要:分类中共包含有种触发器。建立一个触发器,每隔一分钟,每天上午点至下午点之间建立一个触发器,将在每天上午执行第一种实现方式第二种实现方式建立一个触发器,将在星期三上午在系统默认值之外执行第一种方式第二种方式 Trigger分类 Quartz中共包含有4种触发器。 常用的是: SimpleTrigger 和 CronTrigger。不常用的是:CalendarIntervalTrigger...

    vibiu 评论0 收藏0
  • ApiBoot - ApiBoot Quartz 使用文档

    摘要:重复任务循环任务,当在不传递重复执行次数时,不进行重复执行,仅仅执行一次,如下所示参数恒宇少年每次循环的间隔时间,单位毫秒循环次数开始时间,秒后执行任务类任务由类进行构建。 ApiBoot Quartz ApiBoot内部集成了Quartz,提供了数据库方式、内存方式的进行任务的存储,其中数据库方式提供了分布式集群任务调度,任务自动平滑切换执行节点。 引用ApiBoot Quartz ...

    CocoaChina 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<