您好,登錄后才能下訂單哦!
Quartz是開源組織OpenSymphony的一個作業調度框架,采用多線程架構,可伸縮性強,可集群擴展。
Quartz提供的常用類:Scheduler, SchedulerFactory, Job, JobDetail, JobBuilder, Trigger, TriggerBuilder, ScheduleBuilder
UML類圖如下:
Scheduler時Quartz調度程序的主要接口,維護一個JobDetails和Triggers的注冊表,到觸發時間時,調度程序將執行Job。
調度程序Scheduler實例通過SchedulerFactory工廠創建,有兩個實現類DirectSchedulerFactory和StdSchedulerFactory,前者不寫入持久化數據庫,后者加載quartz.properties屬性配置文件,將查找加載當前目錄和org.quartz包。
任務是實現Job接口的一個類,實現方法execute(),可聲明屬性:
- @DisallowConcurrentExecution,同時只執行一個實例。
- @PersisJobDataAfterExecution,正常執行后將JobDataMap備份。
JobDetail將任務屬性傳遞給Scheduler,通過JobBuilder創建,JobDataMap保存任務實例的狀態信息。
觸發器Trigger通過TriggerBuilder創建,結合ScheduleBuilder設置時間規則,可通過JobDataMap傳遞數據給Job。常用的兩種觸發器:
- SimpleTrigger:指定開始時間、結束時間、重復次數、執行間隔。
- CronTrigger:使用Cron表達式設置時間規則。
構建ScheduleBuilder設置時間規則時,可配置Misfire選項,指定執行失敗熄火時的處理規則:
含義 | 支持ScheduleBuilder | |
IgnoreMisfires | 馬上執行,比如整點9點失敗,系統10:15啟動,會馬上執行9點10點的任務。 | SimpleSchedule CronScheduleBuilder CalendarIntervalScheduleBuilder DailyTimeIntervalScheduleBuilder |
FireNow | 立即再次觸發 | SimpleSchedule |
NowWithExistingCount | 立即再次觸發,不計入總次數。 | SimpleSchedule |
NowWithRemainingCount | 立即再次觸發,計入總次數。 | SimpleSchedule |
NextWithExistingCount | 等待下次執行,不計入總次數。 | SimpleSchedule |
NextWithRemainingCount | 等待下次執行,計入總次數。 | SimpleSchedule |
DoNothing | 不做任何處理,執行下一次周期。 | CronScheduleBuilder CalendarIntervalScheduleBuilder DailyTimeIntervalScheduleBuilder |
FireAndProceed | 合并下一個周期,正常執行。比如整點9點10點失敗,系統10:15啟動,在11點合并執行一次。 | CronScheduleBuilder CalendarIntervalScheduleBuilder DailyTimeIntervalScheduleBuilder |
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。