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:作業,工作
說在最後的話:編寫實屬不易,若喜歡或者對你有幫助記得點贊+關注或者收藏哦~