Quartz Job Scheduling Framework[翻译]第五章. Cron 触发器及相关内容 (第四部分)
七. Cron 表达式 Cookbook
此处的 Cron 表达式 cookbook 旨在为常用的执行需求提供方案。尽管不可能列举出所有的表达式,但下面的应该为满足你的业务需求提供了足够的例子。
·分钟的 Cron 表达式
·日上的 Cron 表达式
·周和月的 Cron 表达式
八. 创建一个即刻触发的 Trigger
有时候,你需要立即执行一个 job。例如,想像一下,你正在构建一个 GUI 程序并允许用户能立刻执行。另一个例子,你或许已经检测到了某个 Job 未执行成功,因此你想要即刻重跑一次。在 Quartz 1.5,有几个方法被加入到了 TriggerUtils 类中,使得实现那些事很容易了。代码 5.4 展示了如何部署一个 job,只让它立即执行一次。
代码 5.4. 你可以用 TriggerUtils 来立即执行一个 Job
在代码 5.4 中,TriggerUtils 的 makeImmediateTrigger() 方法被用来立即执行一个 Job。第一个参数是将要触发的次数。第二个参数是执行的间隔时间。为方便起见,这个方法的签名显示如下:
public static Trigger makeImmediateTrigger(int repeatCount, long repeatInterval);
TriggerUtils 类提供了许多便利的方法简化了 Trigger 的使用。确切地检查一下这个工具类中看看是否有你想要的东西。你还将在本书上看到更多的使用 TriggerUtils 的例子。 永久链接 https://yanbin.blog/quartz-job-scheduling-framework-5-4/, 来自 隔叶黄莺 Yanbin's Blog
[版权声明]
本文采用 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 进行许可。
此处的 Cron 表达式 cookbook 旨在为常用的执行需求提供方案。尽管不可能列举出所有的表达式,但下面的应该为满足你的业务需求提供了足够的例子。
·分钟的 Cron 表达式
| 用法 | 表达式 |
| 每天的从 5:00 PM 至 5:59 PM 中的每分钟触发 | 0 * 17 * * ? |
| 每天的从 11:00 PM 至 11:55 PM 中的每五分钟触发 | 0 0/5 23 * * ? |
| 每天的从 3:00 至 3:55 PM 和 6:00 PM 至 6:55 PM 之中的每五分钟触发 | 0 0/5 15,18 * * ? |
| 每天的从 5:00 AM 至 5:05 AM 中的每分钟触发 | 0 0-5 5 * * ? |
·日上的 Cron 表达式
| 用法 | 表达式 |
| 每天的 3:00 AM | 0 0 3 * * ? |
| 每天的 3:00 AM (另一种写法) | 0 0 3 ? * * |
| 每天的 12:00 PM (中午) | 0 0 12 * * ? |
| 在 2005 中每天的 10:15 AM | 0 15 10 * * ? 2005 |
·周和月的 Cron 表达式
| 用法 | 表达式 |
| 在每个周一,二, 三和周四的 10:15 AM | 0 15 10 ? * MON-FRI |
| 每月15号的 10:15 AM | 0 15 10 15 * ? |
| 每月最后一天的 10:15 AM | 0 15 10 L * ? |
| 每月最后一个周五的 10:15 AM | 0 15 10 ? * 6L |
| 在 2002, 2003, 2004, 和 2005 年中的每月最后一个周五的 10:15 AM | 0 15 10 ? * 6L 2002-2005 |
| 每月第三个周五的 10:15 AM | 0 15 10 ? * 6#3 |
| 每月从第一天算起每五天的 12:00 PM (中午) | 0 0 12 1/5 * ? |
| 每一个 11 月 11 号的 11:11 AM | 0 11 11 11 11 ? |
| 三月份每个周三的 2:10 PM 和 2:44 PM | 0 10,44 14 ? 3 WED |
八. 创建一个即刻触发的 Trigger
有时候,你需要立即执行一个 job。例如,想像一下,你正在构建一个 GUI 程序并允许用户能立刻执行。另一个例子,你或许已经检测到了某个 Job 未执行成功,因此你想要即刻重跑一次。在 Quartz 1.5,有几个方法被加入到了 TriggerUtils 类中,使得实现那些事很容易了。代码 5.4 展示了如何部署一个 job,只让它立即执行一次。
代码 5.4. 你可以用 TriggerUtils 来立即执行一个 Job
1public class Listing_5_4 {
2 static Log logger = LogFactory.getLog(Listing_5_4.class);
3
4 public static void main(String[] args) {
5 Listing_5_4 example = new Listing_5_4();
6 example.runScheduler();
7 }
8
9 public void runScheduler() {
10 Scheduler scheduler = null;
11
12 try {
13 // Create a default instance of the Scheduler
14 scheduler = StdSchedulerFactory.getDefaultScheduler();
15 scheduler.start();
16 logger.info("Scheduler was started at " + new Date());
17
18 // Create the JobDetail
19 JobDetail jobDetail = new JobDetail("PrintInfoJob",
20 Scheduler.DEFAULT_GROUP,
21 PrintInfoJob.class);
22
23 // Create a trigger that fires once right away
24 Trigger trigger = TriggerUtils.makeImmediateTrigger(0, 0);
25
26 trigger.setName("FireOnceNowTrigger");
27
28 scheduler.scheduleJob(jobDetail, trigger);
29 } catch (SchedulerException ex) {
30 logger.error(ex);
31 }
32 }
33}在代码 5.4 中,TriggerUtils 的 makeImmediateTrigger() 方法被用来立即执行一个 Job。第一个参数是将要触发的次数。第二个参数是执行的间隔时间。为方便起见,这个方法的签名显示如下:
public static Trigger makeImmediateTrigger(int repeatCount, long repeatInterval);
TriggerUtils 类提供了许多便利的方法简化了 Trigger 的使用。确切地检查一下这个工具类中看看是否有你想要的东西。你还将在本书上看到更多的使用 TriggerUtils 的例子。 永久链接 https://yanbin.blog/quartz-job-scheduling-framework-5-4/, 来自 隔叶黄莺 Yanbin's Blog
[版权声明]
本文采用 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 进行许可。