Java基礎學習,quartz框架視頻教程

Java基礎學習,quartz框架視頻教程

長沙達內教育      2022-04-27 12:21:01     1

Java基礎學習,quartz框架視頻教程,第一章、Quartz1.1 Quartz概念Quartz是OpenSymphony開源組織的一個Java開源項目,在2009被Terracotta收購。Quartz官網1.2 Quartz

課程價格 請咨詢

上課時段: 授課校區(qū):

詳細介紹

第一章、Quartz

1.1 Quartz概念

Quartz是OpenSymphony開源組織的一個Java開源項目,在2009被Terracotta收購。Quartz官網

1.2 Quartz任務調度主要元素

Quartz任務調度的主要元素有:

Trigger(觸發(fā)器)

Scheduler(任務調度器)

Job(任務)

其中Trigger,Job是元數(shù)據(jù),Scheduler才是任務調度的控制器。

1.3 Quartz特點

強大的調度功能,例如支持多樣的調度方式

靈活的應用方式,例如支持任務和調度的多種組合方式

分布式和集群功能,在被Terracotta收購后,在Quartz的基礎上的拓展

1.4 Quartz基本元素關系圖

第二章、Trigger(觸發(fā)器)

2.1 Trigger定義

Trigger也即觸發(fā)器,用于定義任務調度時間規(guī)則

2.2 Trigger屬性

startTime和endTime

所有的Trigger都包含startTime、endTime這兩個屬性

優(yōu)先級(Priority)

觸發(fā)器的優(yōu)先級值默認為5,不過注意優(yōu)先級是針對同一時刻來說的,在同一時刻優(yōu)先級高的先觸發(fā)。假如一個觸發(fā)器被執(zhí)行時間為3:00,另外一個為3:01,那么肯定是先執(zhí)行時間為3:00的觸發(fā)器。

錯失觸發(fā)(Misfire)策略

在任務調度中,并不能保證所有的觸發(fā)器都會在指定時間被觸發(fā),假如Scheduler資源不足或者服務器重啟的情況,就好發(fā)生錯失觸發(fā)的情況。

2.3 Trigger類型

在任務調度Quartz中,Trigger主要的觸發(fā)器有:SimpleTrigger,CalendarIntervelTrigger,DailyTimeIntervalTrigger,CronTrigger,注意,本博客所介紹的觸發(fā)器都是基于Quartz2.2.x版本的,不同版本,觸發(fā)器類型略有不同。

2.3.1 SimpleTrigger

SimpleTrigger是一種最基本的觸發(fā)器,指定從某一個時間開始,以一定的時間間隔執(zhí)行的任務。

SimpleTrigger的屬性有:

repeatInterval重復間隔

repeatCount重復次數(shù),實際執(zhí)行次數(shù)是repeatCount+1。

simpleSchedule()

//.withIntervalInHours(1)//每小時執(zhí)行一次

.withIntervalInMinutes(1)//每分鐘執(zhí)行一次

//.repeatForever()//次數(shù)不限

.withRepeatCount(10)//次數(shù)為10次

.build();

//構建

2.3.2 CalendarIntervalTrigger

CalendarIntervalTrigger和SimpleTrigger不同的是,SimpleTrigger指定的時間間隔為毫秒,CalendarIntervalTrigger支持的間隔單位有秒,分鐘,小時,天,月,年,星期。

CalendarIntervalTrigger的屬性有:

interval執(zhí)行間隔

intervalUnit執(zhí)行間隔的單位(秒,分鐘,小時,天,月,年,星期)

calendarIntervalSchedule()

.withIntervalInDays(1)//每天執(zhí)行一次

//.withIntervalInWeeks(1)//每周執(zhí)行一次

.build();

2.3.3 DailyTimeIntervalTrigger

DailyTimeIntervalTrigger和SimpleTrigger不同的是不僅可以支持SimpleTrigger支持時間間隔類型,而且還支持指定星期。

DailyTimeIntervalTrigger的屬性有:

startTimeOfDay每天開始時間

endTimeOfDay每天結束時間

daysOfWeek需要執(zhí)行的星期

interval執(zhí)行間隔

intervalUnit執(zhí)行間隔的單位(秒,分鐘,小時,天,月,年,星期)

repeatCount重復次數(shù)

dailyTimeIntervalSchedule()

.startingDailyAt(TimeOfDay.hourAndMinuteOfDay(9,0))

//第天9:00開始

.endingDailyAt(TimeOfDay.hourAndMinuteOfDay(15,0))

//15:00結束

.onDaysOfTheWeek(MONDAY,TUESDAY,WEDNESDAY

,THURSDAY,FRIDAY)

//周一至周五執(zhí)行

.withIntervalInHours(1)

//每間隔1小時執(zhí)行一次

.withRepeatCount(100)

//最多重復100次(實際執(zhí)行100+1次)

.build();

2.3.4 CronTrigge

CronTrigger適合于更復雜的任務,它支持Linux Cron的語法。CronTrigger覆蓋了以上三種Trigger的大部分功能。

CronTrigger的屬性只有;

Cron表達式,Cron表達式需要程序員自己編寫,比較復雜

cronSchedule("0 0/3 9-15**?")//每天9:00-15:00,每隔3分鐘執(zhí)行一次

.build();

cronSchedule("0 30 9?*MON")//每周一,9:30執(zhí)行一次

.build();

weeklyonDayAndHourAndMinute(MONDAY,9,30)//等同于0 30 9?*MON

.build();

Cron表達式

星號():可用在所有字段中,表示對應時間域的每一個時刻,例如,在分鐘字段時,表示“每分鐘”;

問號(?):該字符只在日期和星期字段中使用,它通常指定為“無意義的值”,相當于點位符;

減號(-):表達一個范圍,如在小時字段中使用“10-12”,則表示從10到12點,即10,11,12;

逗號(,):表達一個列表值,如在星期字段中使用“MON,WED,FRI”,則表示星期一,星期三和星期五;

斜杠(/):x/y表達一個等步長序列,x為起始值,y為增量步長值。如在分鐘字段中使用0/15,則表示為0,15,30和45秒,而5/15在分鐘字段中表示5,20,35,50,你也可以使用*/y,它等同于0/y;

L:該字符只在日期和星期字段中使用,代表“Last”的意思,但它在兩個字段中意思不同。L在日期字段中,表示這個月份的最后一天,如一月的31號,非閏年二月的28號;如果L用在星期中,則表示星期六,等同于7。但是,如果L出現(xiàn)在星期字段里,而且在前面有一個數(shù)值X,則表示“這個月的最后X天”,例如,6L表示該月的最后星期五;

W:該字符只能出現(xiàn)在日期字段里,是對前導日期的修飾,表示離該日期最近的工作日。例如15W表示離該月15號最近的工作日,如果該月15號是星期六,則匹配14號星期五;如果15日是星期日,則匹配16號星期一;如果15號是星期二,那結果就是15號星期二。但必須注意關聯(lián)的匹配日期不能夠跨月,如你指定1W,如果1號是星期六,結果匹配的是3號星期一,而非上個月最后的那天。W字符串只能指定單一日期,而不能指定日期范圍;

LW組合:在日期字段可以組合使用LW,它的意思是當月的最后一個工作日;

井號(#):該字符只能在星期字段中使用,表示當月某個工作日。如6#3表示當月的第三個星期五(6表示星期五,#3表示當前的第三個),而4#5表示當月的第五個星期三,假設當月沒有第五個星期三,忽略不觸發(fā);

C:該字符只在日期和星期字段中使用,代表“Calendar”的意思。它的意思是計劃所關聯(lián)的日期,如果日期沒有被關聯(lián),則相當于日歷中所有日期。例如5C在日期字段中就相當于日歷5日以后的第一天。1C在星期字段中相當于星期日后的第一天。

Cron表達式對特殊字符的大小寫不敏感,對代表星期的縮寫英文大小寫也不敏感。

以上就是長沙達內教育java培訓機構的小編針對“Java基礎學習,quartz框架視頻教程”的內容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業(yè)老師隨時為你服務。

培訓啦提醒您:交易時請核實對方資質,對于過大宣傳或承諾需謹慎!任何要求預付定金、匯款等方式均存在風險,謹防上當。