任務調度是指在未來某個特定的時間、固定的時間段或有規律變化的時間段到來時,自動調度並執行指定的任務。
這兩個框架都用自己的方式實現了這個功能。區別在於創建、修改、刪除、觸發和監控任務的操作成本。quartz直接為這些操作提供API,意味著開發者擁有最大的操作權限,帶來更高的靈活性。但是,對於不需要高靈活性的系統,或者由非開發人員負責調度任務的系統,需要壹個額外的封裝層來隔離API操作。xxl-job提供這些控制的方式是提供壹個獨立的可視化調度中心,這意味著任務的狀態控制可以從系統中分離出來,通過更易操作的web界面降低了操作人員的門檻。
石英有四個重要成分,使用前需要了解。
參考:石英介紹詳情
1.調度程序
表示壹個Quartz獨立運行的容器,調度器將觸發器綁定到壹個特定的JobDetail,這樣當觸發器被觸發時,就會調度相應的作業。
2.引發
描述作業執行的時間觸發規則。主要有兩個子類,SimpleTrigger和CronTrigger,它們由壹個TriggerKey唯壹標識。
3.職位
定義任務並指定任務執行時的行為。JobExecutionContext提供調度程序的上下文信息,作業的數據可以從JobDataMap中獲取。
3.作業詳細信息
Quartz每次執行壹個作業時都會重新創建壹個作業實例,所以它不直接接受作業實例,而是接收壹個作業實現類。描述作業的實現類和其他相關的靜態信息,如作業名稱、描述等。
向quartz容器添加壹個任務。
計劃作業
要暫停、恢復和刪除任務,只需調用Scheduler的相應方法。
與SimpleTrigger相比,CronTrigger提供了更加靈活的調度規則,cron表達式的知識可以參考cron表達式詳細講解。
在線cron表達式生成器
作業實現類
提示:提示:作業實現類需要用public修飾,即不能是內部類。
在initializing bean # afterpropertiesset中啟動調度程序。
計劃的控制臺日誌
Demo是壹個spring boot項目,已經上傳到GitHub。妳可以在這裏找到它。
jdk 1.8
彈簧靴集成石英。
使用了lombok框架的以下註釋:
xxl-job的分析見下篇博文。