Quartz官方教程翻译系列-Lesson 4

原文地址: http://www.quartz-scheduler.org/documentation/2.4.0-SNAPSHOT/tutorials/tutorial-lesson-04.html

第4课: 触发器更多相关

好像任务一样,触发器也很容易使用,但在充分利用Quartz之前,你需要了解和理解它包含的各种可定制选项。正如前面提到,这里有各种不同的触发器你可以选择其中符合不同任务调度需要的。

你将会在第5课:简单触发器和第6课:Cron触发器学习到这两种最常用的触发器类型。

常见触发器属性:

除了所有触发器类型都具有用于跟踪其标识的TriggerKey属性外,这里有其他属性是触发器类型共有的。这些公用的属性通过TriggerBuilder设置当你构建触发器定义的时候(下面会有例子)。

这里是所有触发器类型的共有属性清单:

  • "jobKey" 属性指示触发器触发是应执行的任务的标识
  • "startTime"属性指示触发器的任务调度的生效时间。值是一个 java.util.Date 对象定义了一个指定的日历时间。对于某些触发器类型,触发器会真实触发在开始时间,而对其他它只是简单的标记任务调度应该开始的时间。这意味着你可以存储一个任务调度的触发器好像“每个月的5号”在一月份,并且如果开始属性设置为 4月1号,那么离触发器触发还有几个月。
  • "endTime" 属性指示触发器的任务调度应该不在有效。另一个说法,一个触发器伴随任务调度"每月5号"而且结束时间在七月1号,那么它的最后触发时间为6月5号。

其他属性,我们会再作解释和讨论留待下面的子章节。

优先级

有时候,当你有多个触发器(或者少数工作线程在你的 Quartz 线程池),Quartz 可能没有足够的资源去触发所有的触发器因而在同一时间触发任务调度。在这种情况下,你可能想要控制那个触发器首先获得 Quartz 的工作线程。为了这个目的,你可以设置 priorty 属性在触发器上。如果 N个触发器同时触发,但这里只有Z个工作线程是可用,那么前伴随最高优先级的Z个触发器会先执行。如果你没有设置触发器的优先级,那么他会用默认的优先级 5 。任何整型允许被用来设置优先级,正数,负数。

注意: 优先级仅在触发器同时被触发的情况下。一个触发器调度任务在10::59触发会在一个 11:00 任务调度前触发。

注意:当一个触发器的任务检测到需要恢复,任务调度的恢复后的优先级会跟原来的触发器一致。

哑火命令

触发器的另一个重要的属性是“哑火命令”。哑火出现在当一个持续的触发器在触发的时候由于执行调度被关闭导致的失败,或者因为在 Quartz 的线程池中没有可用的线程执行任务。不同的触发器类型又不同的哑火提示对应他们。默认他们使用一个聪明策略说明-有基于触发器配置的动态的行为。当任务调度开始,它会搜索哑火的触发器,然后根据他们各自配置的哑火指令去更新它们。当你开始使用 Quartz 在你的项目中,你应该让自己熟悉哑火命令定义指定的触发器类型,并在JavaDoc上解释它们。更多关于哑火命令的指定的命令会在教程讨论到特定触发器类型的时候给出。

日历

Quartz 日历 对象(并不是 java.util.Calendar 对象) 可以定义触发器并关联,存储触发器在任务调度。日历对于从触发器的触发时间表中排除时间段很有用。举例,你可以创建一个每周末 9::3 am的触发器,但增加一个日历排除全部的公众假期。

日历可以是任何实现了 Calendar 接口的的序列化对象,好像这样:


package org.quartz;

public interface Calendar {

  public boolean isTimeIncluded(long timeStamp);

  public long getNextIncludedTime(long timeStamp);

}

注意到这些方法的参数都是 long 类型。正如你所猜,他们是timestamp 的微秒类型。这意味日历可以屏蔽的时间间隔达到微秒级。适当地,你对一整天的封闭感兴趣。方便地,Quartz 包含类 org.quartz.impl.HolidayCalendar,正是如此。

日历必须实例化并通过addCalendar(...)f方法注册到任务调度。如果你使用HolidayCalendar,在实例化它后,你应该使用它的 addExcludedDate(Date date) 方法为了填充你希望排除的日期。同样的日历实例可以被多个触发器使用好像:

Calendar Example


HolidayCalendar cal = new HolidayCalendar();
cal.addExcludedDate( someDate );
cal.addExcludedDate( someOtherDate );

sched.addCalendar("myHolidays", cal, false);


Trigger t = newTrigger()
    .withIdentity("myTrigger")
    .forJob("myJob")
    .withSchedule(dailyAtHourAndMinute(9, 30)) // execute job daily at 9:30
    .modifiedByCalendar("myHolidays") // but not on holidays
    .build();

// .. schedule job with trigger

Trigger t2 = newTrigger()
    .withIdentity("myTrigger2")
    .forJob("myJob2")
    .withSchedule(dailyAtHourAndMinute(11, 30)) // execute job daily at 11:30
    .modifiedByCalendar("myHolidays") // but not on holidays
    .build();

// .. schedule job with trigger2

构建触发器的详细信息会在下面的课程中给出。现时为止,只要相信上面代码创建两个触发器,每个任务调度日常触发。然而,在日历排除的期间内将发生的任何触发都将被跳过。

org.quartz.impl.calendar 包的多个日历实现获取你所需。

本文由博客一文多发平台 OpenWrite 发布!

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,192评论 6 511
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,858评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,517评论 0 357
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,148评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,162评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,905评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,537评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,439评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,956评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,083评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,218评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,899评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,565评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,093评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,201评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,539评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,215评论 2 358

推荐阅读更多精彩内容