Java基礎(chǔ)學(xué)習(xí),quartz框架視頻教程

Java基礎(chǔ)學(xué)習(xí),quartz框架視頻教程

長(zhǎng)沙達(dá)內(nèi)教育      2022-04-27 12:21:01     10

Java基礎(chǔ)學(xué)習(xí),quartz框架視頻教程,第一章、Quartz1.1 Quartz概念Quartz是OpenSymphony開源組織的一個(gè)Java開源項(xiàng)目,在2009被Terracotta收購(gòu)。Quartz官網(wǎng)1.2 Quartz

課程價(jià)格 請(qǐng)咨詢

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

詳細(xì)介紹

第一章、Quartz

1.1 Quartz概念

Quartz是OpenSymphony開源組織的一個(gè)Java開源項(xiàng)目,在2009被Terracotta收購(gòu)。Quartz官網(wǎng)

1.2 Quartz任務(wù)調(diào)度主要元素

Quartz任務(wù)調(diào)度的主要元素有:

Trigger(觸發(fā)器)

Scheduler(任務(wù)調(diào)度器)

Job(任務(wù))

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

1.3 Quartz特點(diǎn)

強(qiáng)大的調(diào)度功能,例如支持多樣的調(diào)度方式

靈活的應(yīng)用方式,例如支持任務(wù)和調(diào)度的多種組合方式

分布式和集群功能,在被Terracotta收購(gòu)后,在Quartz的基礎(chǔ)上的拓展

1.4 Quartz基本元素關(guān)系圖

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

2.1 Trigger定義

Trigger也即觸發(fā)器,用于定義任務(wù)調(diào)度時(shí)間規(guī)則

2.2 Trigger屬性

startTime和endTime

所有的Trigger都包含startTime、endTime這兩個(gè)屬性

優(yōu)先級(jí)(Priority)

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

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

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

2.3 Trigger類型

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

2.3.1 SimpleTrigger

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

SimpleTrigger的屬性有:

repeatInterval重復(fù)間隔

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

simpleSchedule()

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

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

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

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

.build();

//構(gòu)建

2.3.2 CalendarIntervalTrigger

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

CalendarIntervalTrigger的屬性有:

interval執(zhí)行間隔

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

calendarIntervalSchedule()

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

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

.build();

2.3.3 DailyTimeIntervalTrigger

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

DailyTimeIntervalTrigger的屬性有:

startTimeOfDay每天開始時(shí)間

endTimeOfDay每天結(jié)束時(shí)間

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

interval執(zhí)行間隔

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

repeatCount重復(fù)次數(shù)

dailyTimeIntervalSchedule()

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

//第天9:00開始

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

//15:00結(jié)束

.onDaysOfTheWeek(MONDAY,TUESDAY,WEDNESDAY

,THURSDAY,FRIDAY)

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

.withIntervalInHours(1)

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

.withRepeatCount(100)

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

.build();

2.3.4 CronTrigge

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

CronTrigger的屬性只有;

Cron表達(dá)式,Cron表達(dá)式需要程序員自己編寫,比較復(fù)雜

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表達(dá)式

星號(hào)():可用在所有字段中,表示對(duì)應(yīng)時(shí)間域的每一個(gè)時(shí)刻,例如,在分鐘字段時(shí),表示“每分鐘”;

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

減號(hào)(-):表達(dá)一個(gè)范圍,如在小時(shí)字段中使用“10-12”,則表示從10到12點(diǎn),即10,11,12;

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

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

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

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

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

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

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

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

以上就是長(zhǎng)沙達(dá)內(nèi)教育java培訓(xùn)機(jī)構(gòu)的小編針對(duì)“Java基礎(chǔ)學(xué)習(xí),quartz框架視頻教程”的內(nèi)容進(jìn)行的回答,希望對(duì)大家有所幫助,如有疑問,請(qǐng)?jiān)诰€咨詢,有專業(yè)老師隨時(shí)為你服務(wù)。

培訓(xùn)啦提醒您:交易時(shí)請(qǐng)核實(shí)對(duì)方資質(zhì),對(duì)于過大宣傳或承諾需謹(jǐn)慎!任何要求預(yù)付定金、匯款等方式均存在風(fēng)險(xiǎn),謹(jǐn)防上當(dāng)。