Quartz定時任務學習(五)觸發器

2021-05-23 07:49:59 字數 2383 閱讀 1221

顧名思義,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.配...