觸發器(Trigger)
Trigger是一個抽象類,Quartz提供了兩個比較常用的觸發器SimpleTrigger和CronTrigger。它們都是Trigger的子類
SimpleTrigger
這是一個簡單的觸發器,通過它我們可以定義觸發的時間,并選擇性的設定重復的次數和間隔時間。它有以下常用的屬性
參數名 |
參數類型 |
備注 |
name |
String |
觸發器名稱 |
group |
String |
觸發器組名稱 |
repeatCount |
int |
重復次數,注意:如果為0表示不執行,-1表示不限制次數(直到過期),默認為0 |
repeatInterval |
long |
間隔時間,注意:是以毫秒為單位 |
startTime |
Date |
開始時間,默認當前時間 |
endTime |
Date |
過期時間,默認一直執行(直到執行次數已達到repeatCount) |
CronTrigger
這個觸發器的功能非常強大,而且非常靈活,但需要掌握有關的Cron表達式知識
參數名 |
參數類型 |
備注 |
name |
String |
觸發器名稱 |
group |
String |
觸發器組名稱 |
cronEx |
CronExpression |
規則表達式 |
startTime |
Date |
開始時間,默認當前時間 |
endTime |
Date |
過期時間,默認一直執行(直到執行次數已達到repeatCount) |
觸發器規則表達式配置:
格式:
[秒] [分] [小時] [日] [月] [周] [年]
格式說明:
位置 |
時間域名 |
是否必須 |
允許值 |
允許通配符 |
1 |
秒 |
是 |
0-59 |
, - * / |
2 |
分 |
是 |
0-59 |
, - * / |
3 |
小時 |
是 |
0-23 |
, - * / |
4 |
日 |
是 |
1-31 |
, - * ? / L W |
5 |
月 |
是 |
1-12 |
, - * / |
6 |
周 |
是 |
1-7或MON-SUN |
, - * ? / L # |
7 |
年 |
否 |
empty或1970-2099 |
, - * / |
通配符說明:
|
|
* |
可用在所有字段中,表示對應時間域的每一個時刻,例如,*在分鐘字段時,表示“每分鐘” |
? |
該字符只在日期和星期字段中使用,它通常指定為“無意義的值”,相當于點位符 |
- |
表示區間。例如 在小時上設置 "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出現在星期字段里,而且在前面有一個數值X,則表示“這個月的最后X天”,例如,6L表示該月的最后星期五 |
W |
該字符只能出現在日期字段里,是對前導日期的修飾,表示離該日期最近的工作日。例如15W表示離該月15號最近的工作日,如果該月15號是星期六,則匹配14號星期五;如果15日是星期日,則匹配16號星期一;如果15號是星期二,那結果就是15號星期二。但必須注意關聯的匹配日期不能夠跨月,如你指定1W,如果1號是星期六,結果匹配的是3號星期一,而非上個月最后的那天。W字符串只能指定單一日期,而不能指定日期范圍 |
# |
該字符只能在星期字段中使用,表示當月某個工作日。如6#3表示當月的第三個星期五(6表示星期五,#3表示當前的第三個),而4#5表示當月的第五個星期三,假設當月沒有第五個星期三,忽略不觸發 |