1. 程式人生 > >Quartz任務排程的概念

Quartz任務排程的概念

什麼是Quartz任務排程?

Quartz任務排程就是一個在預先確定(被納入日程)的時間到達時,負責執行(或者通知)一個job(作業)

例如:
①外賣訂單下單後未付款,15分鐘後自動撤消訂單,並自動解鎖鎖定的商品…
②訂購車票時,在付款時先鎖定該車票,在特定時間,比如十五分鐘未付款,此票會重新加入購票系統,其他旅客可以購買該票
③月底要結算該月的財務,每個月月底要生成報表,那每個月需要做任務排程,自動的去處理生成報表這一活動,無需手動。

Quartz的觸發器的種類

觸發器用來告訴排程程式作業什麼時候觸發該事件。
框架提供了5種觸發器型別
SimpleTrigger、CronTirgger、DateIntervalTrigger、NthIncludedDayTrigger、Calendar

最常用的SimpleTrigger(簡單觸發器)和CronTrigger(表示式觸發器)
SimpleTrigger:執行N次,重複N次
CronTrigger(表示式觸發器):幾時幾分幾秒,哪天/哪月/哪年,執行

Quartz的觸發器的儲存方式

儲存方式 優點 缺點
RAMJobStore(記憶體作業儲存型別) 不要外部資料庫,配置容易,執行速度快 因為排程程式資訊是儲存在JVM的記憶體裡面,所以,當應用程式停止執行時,所有排程資訊將被丟失; 另外因為儲存到JVM記憶體裡面,所以可以儲存多少個Job和Trigger將會受到限制
JDBCJobStore(資料庫作業儲存型別) 支援叢集,因為所有的任務資訊都會儲存到資料庫中,可以控制事物,還有就是如果應用伺服器關閉或者重啟,任務資訊都不會丟失,並且可以恢復因伺服器關閉或者重啟而導致執行失敗的任務 執行速度的快慢取決與連線資料庫的快慢

Quartz中的 Job

如果是普通專案,job類則要實現Job介面,重寫
public void execute(jobExecutionContext context) ;方法

jobExecutionContext 提供排程上下文各種資訊,執行時資料儲存在jobDataMap中

jobName+groupName=primary key它代表一個Job的唯一性,它是標識

cronExpression表示式解釋

表示式:* * * * * * *
含義:[秒] [分] [小時] [日] [月] [周] [年]
常用示例:
①每天凌晨2點 0 0 2 * * ?和每天隔一小時 0 * */1 * * ?

②例1:每隔5秒執行一次:*/5 * * * * ?

③例2:每隔5分執行一次:0 */5 * * * ?

關鍵單詞

Scheduler:排程程式,日程安排程式 
Job:作業,工作

說在最後的話:編寫實屬不易,若喜歡或者對你有幫助記得點贊+關注或者收藏哦~