- 使用 Spring Initializr 创建 Spring Boot 应用程序
- 在Spring Boot中配置Cassandra
- 在 Spring Boot 上配置 Tomcat 连接池
- 将Camel消息路由到嵌入WildFly的Artemis上
CronTrigger 通常比 SimpleTrigger 更有用,如果您需要根据日历类的概念而不是精确指定的简单触发器间隔来重新定义作业调度。
有了CronTrigger,你可以指定诸如“每个周五中午”,或“每个工作日和上午9:30”,甚至“每星期一、星期三和周五上午9:00到10:00之间的每5分钟”。
即使是这样,像SimpleTrigger一样,CronTrigger有一个startTime,它指定调度何时生效,以及一个(可选的)endTime,指定何时停止调度。
cron 表达式用于配置 CronTrigger 的实例。cron 表达式是由七个子表达式组成的字符串,它们描述了日程的各个细节。这些子表达式与空白区分开,并表示:
Seconds
Minutes
Hours
Day-of-Month
Month
Day-of-Week
Year (optional field)
一个完整的cron表达式的例子是字符串“0 0 12 ?”-意思是“每周三12:00 pm”。
单个子表达式可以包含范围和/或列表。例如,前一个星期的字段(读“WED”)可以替换为“周一-周五”、“MON、WED、FRI”,甚至“MON-WED,SAT”。
Wild-cards(“字符”)可以用来表示这个字段的“每一个”可能值。因此,上一个例子的“月”字段的“字符”只是表示“每个月”。因此,“*”在一周的工作日中显然意味着“每周的每一天”。
所有字段都有一组可以指定的有效值。这些值应该是相当明显的——例如,0到59的秒数和分钟数,以及数小时内0到23的值。一个月的天数可以是1-31,但是你需要注意一个月里有多少天!个月可以指定值0到11之间,或通过使用字符串1月,2月,3月,4月,5月,6月,7月,8月,9月,10月,11月和12月Days-of-Week之间可以指定值1和7(1 =周日)或通过使用字符串的太阳,星期一,星期二,星期三,星期四,星期五,坐。
/
“/” 字符可以用来指定值的增量。例如,如果你把“0/15”放在分钟字段中,它的意思是“每小时15分钟,从0分钟开始”。如果你在分钟字段中使用“3/20”,它将意味着“每小时20分钟,从3分钟开始”——或者换句话说,它与分钟字段中的“3、23、43”是一样的。注意,“/35”并不意味着“每35分钟”——意思是“每小时35分钟,从0分钟开始”——或者换句话说,就是指定“0,35”。
?
“?“ 是允许在一个月和一个星期的区间内。”它用于指定“没有特定值”。当您需要在两个字段中的一个中指定某个值时,这是有用的,但不是另一个字段中指定的。请参见下面的示例(以及CronTrigger JavaDoc)来进行说明。
L
W
#
“#” 用于指定月份的“第n个工作日”。例如,“6#3”或“周五3”的价值意味着“一个月的第三个周五”。
下面是几个例子的表达式及其含义——你可以找到更加 org.quartz.CronExpression
的 JavaDoc
“0 0/5 * * * ?”
“10 0/5 * * * ?”
“0 30 10-13 ? * WED,FRI”
“0 0/30 8-9 5,20 * ?”
请注意,有些调度要求过于复杂,无法用单个触发器来表示——比如“早上9点到10点之间每5分钟,下午1点到10点之间的每20分钟”。此场景中的解决方案是简单地创建两个触发器,并将它们注册为运行相同的作业。
CronTrigger 实例是使用 TriggerBuilder(用于触发器的主要属性)和 CronScheduleBuilder (用于CronTrigger-specific属性)构建的。要在dsl风格中使用这些构建器,请使用静态导入:
import static org.quartz.TriggerBuilder.*;
import static org.quartz.CronScheduleBuilder.*;
import static org.quartz.DateBuilder.*:
trigger = newTrigger()
.withIdentity("trigger3", "group1")
.withSchedule(cronSchedule("0 0/2 8-17 * * ?"))
.forJob("myJob", "group1")
.build();
trigger = newTrigger()
.withIdentity("trigger3", "group1")
.withSchedule(dailyAtHourAndMinute(10, 42))
.forJob(myJobKey)
.build();
or
trigger = newTrigger()
.withIdentity("trigger3", "group1")
.withSchedule(cronSchedule("0 42 10 * * ?"))
.forJob(myJobKey)
.build();
trigger = newTrigger()
.withIdentity("trigger3", "group1")
.withSchedule(weeklyOnDayAndHourAndMinute(DateBuilder.WEDNESDAY, 10, 42))
.forJob(myJobKey)
.inTimeZone(TimeZone.getTimeZone("America/Los_Angeles"))
.build();
or
trigger = newTrigger()
.withIdentity("trigger3", "group1")
.withSchedule(cronSchedule("0 42 10 ? * WED"))
.inTimeZone(TimeZone.getTimeZone("America/Los_Angeles"))
.forJob(myJobKey)
.build();
下面的说明可以用来告诉 Quartz 在 CronTrigger 发生 MisFire 时应该做什么。(在本教程的触发器部分中引入了错误的情况)。
这些指令被定义为CronTrigger本身的常量(包括描述其行为的JavaDoc)。说明书包括:
MISFIRE_INSTRUCTION_IGNORE_MISFIRE_POLICY
MISFIRE_INSTRUCTION_DO_NOTHING
MISFIRE_INSTRUCTION_FIRE_NOW
所有的触发器都有触发器。MISFIRE_INSTRUCTION_SMART_POLICY
指令可用,此指令也是所有触发器类型的默认指令。
“智能策略”指令由 CronTrigger 解释为 MISFIRE_INSTRUCTION_FIRE_NOW
的 JavaDoc CronTrigger.updateAfterMisfire()
方法解释这种行为的具体细节。
在构建 CronTrigger 时,您可以将 misfire 指令指定为简单调度的一部分(通过cronschedule erbuilder):
trigger = newTrigger()
.withIdentity("trigger3", "group1")
.withSchedule(cronSchedule("0 0/2 8-17 * * ?")
..withMisfireHandlingInstructionFireAndProceed())
.forJob("myJob", "group1")
.build();
Hive —— 入门 Hive介绍 Apache Hive是一款建立在Hadoop之上的开源数据仓库系统,可以将存储在Hadoop文件中的结构化、半结构化数据文件映射为一张数据库表,基于表提供了一
HBase —— 入门 HBase介绍 HBase是一个分布式的、面向列的开源数据库,该技术来源于 Fay Chang 所撰写的Google论文“Bigtable:一个结构化数据的分布式存储系统”
零:前端目前形势 前端的发展史 HTML(5)、CSS(3)、JavaScript(ES5、ES6):编写一个个的页面 -> 给后端(PHP、Python、Go、Java) ->
在本教程中,您将了解在计算机上运行 JavaScript 的不同方法。 JavaScript 是一种流行的编程语言,具有广泛的应用程序。 JavaScript 以前主要用于使网页具有交
我曾经是一个对编程一窍不通的小白,但因为对互联网世界的好奇心和求知欲的驱使,我踏入了编程的殿堂。在学习的过程中,我发现了一门神奇的编程语言——Python。Python有着简洁、易读的语法,让初学者能
嗨,亲爱的读者们! 今天我要给大家分享一些关于Python爬虫的小案例。你是否曾为了获取特定网页上的数据而烦恼过?或者是否好奇如何从网页中提取信息以供自己使用?那么,这篇文章将会给你一些启示和灵感。
关闭。这个问题是opinion-based 。目前不接受答案。 想要改进这个问题吗?更新问题,以便 editing this post 可以用事实和引文来回答它。 . 已关闭 8 年前。 Improv
我想创建一个像https://apprtc.appspot.com/?r=04188292这样的应用程序。我对 webrtc 了解一点,但无法掌握 google app-engine。如何为 java
我刚刚开始使用 Python 并编写了一个简单的周边程序。但是,每当我在终端中键入 python perimeter.py 时,都会收到以下错误,我不知道如何解决。 >>> python perime
Redis有5个基本数据结构,string、list、hash、set和zset。它们是日常开发中使用频率非常高应用最为广泛的数据结构,把这5个数据结构都吃透了,你就掌握了Redis应用知识的一半了
创建发布web项目 具体步骤: 1.在开发工具中创建一个dynamic web project helloword 2.在webContent中创建index.html文件 3.发布web应用到
如果你在 Ubuntu 上使用终端的时间很长,你可能会希望调整终端的字体和大小以获取一种良好的体验。 更改字体是一种最简单但最直观的 Linux 的终端自定义 的方法。让我
1. 前言 ADODB 是 Active Data Objects Data Base 的简称,它是一种 PHP 存取数据库的函式组件。现在 SFS3 系统 (校园自由软件交流网学务系统) 计划的
我对 neo4j 完全陌生,我很抱歉提出这样一个基本问题。我已经安装了neo4j,我正在使用shell“localhost:7474/webadmin/#/console/” 我正在寻找一个很好的例子
我正在阅读 ios 4 的核心音频,目的是构建一个小测试应用程序。 在这一点上,我对所有 api 的研究感到非常困惑。理想情况下,我想知道如何从两个 mp3 中提取一些样本到数组中。 然后在回调循环中
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于 Stack Overflow 来说是无关紧要的,因
我下载了 GNUStep并安装了它,但是我不确定在哪里可以找到 IDE。有谁知道什么程序可以用作 GNUStep IDE/从哪里获取它们?否则,有没有人知道有关如何创建和编译基本 GNUStep 程序
我正在尝试开始使用 Apache Solr,但有些事情我不清楚。通读tutorial ,我已经设置了一个正在运行的 Solr 实例。我感到困惑的是 Solr 的所有配置(架构等)都是 XML 格式的。
请问有没有关于如何开始使用 BruTile 的文档? 我目前正在使用 SharpMap,我需要预缓存切片以加快进程 最佳答案 我今天正在研究这个:)Mapsui项目site严重依赖 SharpMap
尽我所能,我无法让 CEDET 做任何事情。 Emacs 24.3。我下载了最新的 CEDET 快照。我从他的底部(不是这样)Gentle Introduction 中获取了 Alex Ott 的设置
我是一名优秀的程序员,十分优秀!