六合彩最高极限

【Quartz指南】更多關于Triggers

象jobs一樣,triggers也相對來說很容易。但是,我們還是要理解它的一些特性。Quartz里也有很多類型的trigger提供給我們使用。

Calendars

Quartz Calendar 對象(不是java.util.Calendar對象)能夠在trigger儲存在調度器時和trigger關聯起來。Calendars主要用來在trigger配置時排除一些時間。例如,你能夠創建一個在每個工作日早上9:30觸發的trigger,然后為這個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)指令

觸發器的另外一個重要的屬性是“不觸發指令”。如果一個持久的觸發器由于調度器被關閉了而沒有找到它的觸發時間,那么一個不觸發將會發生。不同的觸發器類型有不同的不觸發指令。默認的,他們都用“smart policy”指令-這是一個基于觸發器類型和配置的動態行為。當調度器啟動時,他將會搜尋所有沒觸發的持久化的triggers,然后基于他們各個配置的不觸發指令來更新他們。當你用Quartz,你應該熟悉各個不觸發指令,我們在以下章節有一些介紹。給一個trigger實例配置不觸發指令,要用此實例的setMisfireInstruction(..)方法。

TriggerUtils – Triggers Made Easy

TriggerUtils類(在org.quartz包里)包含了很多方便的工具。能夠幫你創建triggers和datas。用這個類能夠很容易制造一些trigges,這些triggers能夠在每分鐘,每小時,每周,每個月等等觸發。用它也能產生一些接近某個秒、分鐘、小時的天-這在設置trigger的啟動時間很有幫助。

TriggerListeners

最后,triggers有一些注冊了的監聽器,象job一樣。實現了TriggerListener接口的對象將接受一個trigger被觸發的通知。

本站部分文章源于互聯網,本著傳播知識、有益學習和研究的目的進行的轉載,為網友免費提供。如有著作權人或出版方提出異議,本站將立即刪除。如果您對文章轉載有任何疑問請告之我們,以便我們及時糾正。

PS:推薦一個微信公眾號: askHarries 或者qq群:474807195,里面會分享一些資深架構師錄制的視頻錄像:有Spring,MyBatis,Netty源碼分析,高并發、高性能、分布式、微服務架構的原理,JVM性能優化這些成為架構師必備的知識體系。還能領取免費的學習資源,目前受益良多

轉載請注明原文出處:Harries Blog? » 【Quartz指南】更多關于Triggers

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

評論 0

  • 昵稱 (必填)
  • 郵箱 (必填)
  • 網址
六合彩最高极限