六合彩最高极限

【Quartz指南】更多关于Triggers

象jobs一样,triggers也相对来说很容易。但是,我们还是要理解它的一些特性。Quartz里也有很多类型的trigger提供给我们使用。

Calendars

Quartz Calendar 对象(不是java.util.Calendar对象)能够在trigger储存在调度器时和trigger关联起来。Calendars主要用来在trigger配置时排除一些时间。例如,你能够创建一个在每个工作日早上9:30触发的trigger,?#32531;?#20026;这个trigger增加一个排除所有商业的节假日的Calendar。

Calendars能够是任何序列化的对象,只要这些对象实现了Calendar接口:

package org.quartz;

public interface Calendar {

public boolean isTimeIncluded(long timeStamp);

public long getNextIncludedTime(long timeStamp);

}

注意到这些方法的参数类型是long。这意味着calendars能够排除毫秒级的时间段。大部分地,我们感兴趣的是一整天的,所以在Quartz里,有个实现类提供了方便:org.quartz.impl.HolidayCalendar

Calendars必须被实例化并且通过addCalendar(..)方法注册到调度器里。如果你用HolidayCalendar,在实例它之后,你应该用它的addExcludedDate(Date date)方法以便组装上你想排除的那几天。一个calendar实例能够被多个triggers使用:

HolidayCalendar cal = new HolidayCalendar();

cal.addExcludedDate( someDate );

sched.addCalendar(“myHolidays”, cal, false);

Trigger trigger = TriggerUtils.makeHourlyTrigger(); // 每小时触发

trigger.setStartTime(TriggerUtils.getEvenHourDate(new Date()));? //下一个小时开始?trigger.setName(“myTrigger1″);

trigger.setCalendarName(“myHolidays”);

// .. schedule job with trigger

Trigger trigger2 = TriggerUtils.makeDailyTrigger(8, 0); // 每天早上8点触发

trigger2.setStartTime(new Date()); //立即开始

trigger2.setName(“myTrigger2″);

trigger2.setCalendarName(“myHolidays”);

// .. schedule job with trigger2

不触发(misfire)指令

触发器的另外一个重要的属性是“不触发指令”。如果一个持久的触发器由于调度器被关闭了而没有?#19994;?#23427;的触发时间,那么一个不触发将会发生。不同的触发器类型有不同的不触发指令。默认的,他们都用“smart policy”指令-这是一个基于触发器类型和配置的动态行为。当调度器启动时,他将会搜寻所有没触发的持久化的triggers,?#32531;?#22522;于他们各个配置的不触发指令来更新他们。当你用Quartz,你应该熟悉各个不触发指令,我们在以下章节有一些介绍。给一个trigger实例配置不触发指令,要用此实例的setMisfireInstruction(..)方法。

TriggerUtils – Triggers Made Easy

TriggerUtils类(在org.quartz包里)包含了很多方便的工具。能够帮你创建triggers和datas。用这个类能够很容易制造一些trigges,这些triggers能够在每分钟,每小时,每周,每个月等等触发。用它也能产生一些接近某个秒、分钟、小时的天-这在设置trigger的启动时间很有帮助。

TriggerListeners

最后,triggers有一些注册?#35828;?#30417;听器,象job一样。实现了TriggerListener接口的对象将接受一个trigger被触发的通知。

本站部分文章源于互联网,本着传播知识、有益学习和研究的目的进行的转载,为网友免费提供。如有著作权人或出版方提出异议,本站将立即删除。如果您对文章转载有任?#25105;晌是?#21578;之我们,以便我们及?#26412;?#27491;。

PS?#21644;?#33616;一个微信公众号: askHarries 或者qq?#28023;?74807195,里面会分享一些资深架?#25925;?#24405;制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架?#25925;?#24517;备的知识体系。还能领取免费的学习资源,目前受益良多

转载请注明原文出处:Harries Blog? » 【Quartz指南】更多关于Triggers

赞 (0)
分享到:更多 ()

评论 0

  • 邮箱 (必填)
  • 网址
六合彩最高极限