顧名思義,trigger(觸發器)的責任就是觸發乙個 job 去執行。當用 scheduler 註冊乙個 job 的時候要建立乙個 trigger 與這個 job 相關聯。quartz 提供了四種型別的 trigger,但其中兩種是最為常用的,分別是下面的兩種: ******trigger 和 crontrigger.
******trigger 是兩個之中簡單的那個,它主要用來激發單事件的 job,trigger 在指定時間激發,並重複 n 次--兩次激發時間之間的延時為 m,然後結束作業。
crontrigger 非常複雜且強大。它是基於通用的公曆,當需要用一種較複雜的時間表去執行乙個 job 時用到。
為更簡單的使用 trigger,quartz 包含了乙個工具類,叫做 org.quartz.triggerutils. triggerutils 提供了許多便捷的方法簡化了構造和配置 trigger.
首先說下******trigger例項化方式:
1、構造方法******trigger ******trigger = new ******trigger("******trigger", "triggergroup-s1");
******trigger 提供了多種構造方法供例項化,可以通過設定屬性值來設定觸發器狀態,具體可以參考api中******trigger
設定執行間隔時間(毫秒)為10秒:******trigger.setrepeatinterval(10000);
設定重複次數10次:******trigger.setrepeatcount(10);
設定優先順序******trigger.setpriority(10);等等。
2、通過
triggerutils的靜態方法例項化,具體可以參考api
triggerutils
的靜態方法
例如makeimmediatetrigger
(string
trigname, int repeatcount, long repeatinterval)
其中repeatcount如果為-1表示一直執行
repeatinterval表示執行次數
其中還包含很多類似方法,針對年月日周等不同情況來例項化觸發器
3、通過web載入xml檔案來配置,前面第二節中講到web應用的簡單示例。在定義xml的時候有如下觸發器標籤和內容
job1
group1
listener1
group1
0/10 * * * * ?
這種方式是下面要講到的crontrigger.觸發器方式,而******trigger也有可以通過xml來配置,例如:
<******>
job1
group1
listener1
group1
2010-04-22 8:31:00 am
-1
10000
******>
注意紅色標記部分。
通過設定引數來實現觸發時間和具體觸發情況
crontrigger例項化方式:
1、通過構造方法來例項化:
crontrigger ct1 = new crontrigger("crontrigger1","defaultgroup");
cronexpression cexp1 = new cronexpression("0 45 7 * * ?");
ct1.setcronexpression(cexp1);
以上示例是設定每天早晨7.45分執行一次,具體的cronexpression可以參考api或者學習linux的crontab定時任務命令,定義具體差不多,還可以學習下linux的定時任務。
2.通過web載入xml。例如
job1
group1
listener1
group1
0/10 * * * * ?
表示每10秒執行一次
以上幾種都在前面有例子了,下面給出crontrigger例項化方式的構造方法例子:
public void task() throws schedulerexception catch (exception e)
schedule***ctory schedule***ctory = new stdschedule***ctory();
scheduler scheduler= schedule***ctory.getscheduler();
jobdetail jobdetail = new jobdetail("jobdetail1", "jobgroup", myjob1.class);
scheduler.schedulejob(jobdetail, ct1);
scheduler.start();
}
quartz定時任務
此檔案被包含在spring配置檔案中,其中 引數 的值遵循如下規則 0 0 12 每天中午12點觸發 0 15 10 每天上午10 15觸發 0 15 10 每天上午10 15觸發 0 15 10 每天上午10 15觸發 0 15 10 2005 2005年的每天上午10 15觸發 0 14 在每天...
Quartz定時任務
排程器 負責時間監控,如果任務到了指定時間則呼叫器開始工作.觸發器 當排程器執行任務時,會呼叫觸發器開啟執行緒完成任務.job 定時任務統稱.jobdetail 定時任務的具體的細節 呼叫過程 新建立定時任務.將任務交給排程器管理 呼叫器負責監控時間,當到了指定的時間後.呼叫觸發器開啟新的執行緒去完...
quartz定時任務
以下 案例是基於spring boot框架。定義乙個定時任務,我們需要明白這個定時任務是要我們做什麼,什麼時候做。1.配置定時時間。在yml配置檔案中配置定時任務的時間。test singledef syncfilecron 0 0 7 時間配置依次是秒分時日月年,具體配置這裡不就詳細解釋了。2.配...