Quartz 理解一二

2021-09-24 06:31:24 字數 3107 閱讀 4892

1.schedule***ctory 例項化例項scheduler,才能使用。

2.每次使用前,都必須被例項化,一旦重啟,需要再次例項化

3.scheduler啟動,才有可能去執行觸發器,執行job.其實暫停狀態,也不會去執行。

4.quartz關鍵介面:

1.scheduler: 排程器介面

2.job:具體任務內容,由scheduler 執行的。

4.trigger:觸發job的執行,需要制定何種scheduler.常用型別:******trigger 和 crontrigger。目的在於復用job內容。

******trigger:特定時刻,或者延遲一段時間,重複執行n次。

crontrigger:定時執行。

5.jobbuilder :定義jobdetail,設定job 需要的資料。

6.triggerbuilder:定義trigger

複製**

5.scheduler啟動的例項,可以新增、刪除、暫停,job,trigger。

datebuilder 可用來建立特殊時間點date例項。

job 介面

public inte***ce job 

複製**

其中jobexecutioncontext ,可以拿到觸發任務執行相關的,scheduler 例項、trigger 例項、jobdetail例項等

job 和trigger,用key區分,group類唯一,用group 歸類。group+key,唯一區分。

9.執行job excute方法前,建立job 例項,執行完畢,**job 例項。要求存在無引數構造方法。

jobdatamap實現了map介面,可儲存任意物件,便於job 執行使用。

// define the job and tie it to our dumbjob class

jobdetail job = newjob(dumbjob.class)

.withidentity("myjob", "group1") // name "myjob", group "group1"

.usingjobdata("jobsays", "hello world!")

.usingjobdata("myfloatvalue", 3.141f)

.build();

public class dumbjob implements job

public void execute(jobexecutioncontext context)

throws jobexecutionexception

} 複製**

11.從jobexecutioncontext中獲取資料

public class dumbjob implements job 

public void execute(jobexecutioncontext context)

throws jobexecutionexception

} //新增屬性,並設定set方法,job中自動可以獲取資料,更簡潔。

public class dumbjob implements job

public void execute(jobexecutioncontext context)

throws jobexecutionexception

public void setjobsays(string jobsays)

public void setmyfloatvalue(float myfloatvalue)

public void setstate(arraylist state)

}複製**

12.job 中新增的註解

@disallowconcurrentexecution 存放job 配置資料的detail只有乙個

@persistjobdataafterexecution 持久化配置資料。要求配合上方註解,避免併發覆蓋。

13.job 屬性

durability 配置是否自動刪除,在沒有trigger關聯時候。

requestsrecovery 宕機能夠重新恢復

14.job trigger通用屬性

jobkey :job 唯一標識

starttime:job 開始時間

endtime: job 終止時間

priority: 優先順序 。起始時間相同時候才生效。

15.失敗指令:

觸發器不同,失敗指令也不盡相同。

16 日曆物件可復用

holidaycalendar cal = new holidaycalendar();

cal.addexcludeddate( somedate );

cal.addexcludeddate( someotherdate );

sched.addcalendar("myholidays", cal, false);

trigger t = newtrigger()

.withidentity("mytrigger")

.forjob("myjob")

.withschedule(dailyathourandminute(9, 30)) // execute job daily at 9:30

.modifiedbycalendar("myholidays") // but not on holidays

.build();

// .. schedule job with trigger

trigger t2 = newtrigger()

.withidentity("mytrigger2")

.forjob("myjob2")

.withschedule(dailyathourandminute(11, 30)) // execute job daily at 11:30

.modifiedbycalendar("myholidays") // but not on holidays

.build();

// .. schedule job with trigger2

複製**

quartz個人簡單理解

乙個簡單的任務類實現job介面 該類只包含了要執行的任務內容,不包含該任務的name或者屬於哪個組,也不包含如何去執行任務,比如什麼時候開始,執行幾次,執行間隔。jobdetail實現了job例項類的自生資訊,比如name,所屬的組,quartz每次執行任務都會新建乙個job例項,而不是一直使用同乙...

談談你對aja的理解 一 二

什麼是ajax ajax是asynchronous j ascript and xml的縮寫,這一技術能夠向伺服器請求額外的資料而無需解除安裝整個頁面,會帶來良好的使用者體驗。傳統的http請求流程大概是這樣的,瀏覽器向伺服器傳送請求 伺服器根據瀏覽器傳來資料生成response 伺服器把respo...

Quartz教程一 使用quartz

scheduler在使用之前需要例項化。一般通過schedule ctory來建立乙個例項。有些使用者將factory的例項儲存在jndi中,但直接初始化,然後使用該例項也許更簡單 見下面的示例 scheduler例項化後,可以啟動 start 暫停 stand by 停止 shutdown 注意 ...