一、首先我們要談及一個定時框架,就是quartz,本片博客涉及的實例主要是運行用了quartz的任務和觸發器的靈活組合以及任務統一靈活的管理的優點
二、quartz中的核心組件:
1、Job:Job為作業的接口,為任務調度的對象。
2、JobDetail:用來描述Job實現類及其它相關的靜態信息,如Job名字、關聯監聽器等信息。
3、Trigger:觸發器,用於定義任務調度的時間規則,其中CronTrigger是使用cron表達式的觸發器,比較常用。cron表達式不太了解的可以自行百度,在這里不多說。
4、Scheduler:任務調度器,是實際執行任務調度的控制器。每個Scheduler都存有JobDetail和Trigger的注冊,一個Scheduler中可以注冊多個JobDetail和多個Trigger。
三、先不進行數據庫的連接,首先通過實例讓大家明白這幾大組件之間的調用關系
1、首先自定義一個job的實現類:
2、整體流程:
這就是幾大組件之間的關系,其實就是通過JobDetail來描述job的實現類,之后創建觸發器Trigger來制定時間的調度規則,最后將Trigger和JobDetail注冊進scheduler,來進行任務調用的控制。
此代碼在項目的位置為:
代碼gitHub的地址結尾給出
四、定時框架要想和實際項目結合不可以避免的就是需要和mysql進行連接,這樣才可以永久的保存任務,靈活的控制任務,即使項目停止后,再次啟動項目任務仍然可以進行創建,包括任務的暫停或者刪除狀態,都可以實時的監控。
簡介:幾大組件的關系,上文已經說過了,本實例主要是本人開發方便,也方便大家直接使用,使用的技術為springBoot+mysql+quartz,只是實現了項目啟動的定時任務初始話,以及定時任務添加功能,后期有時間了會進行完善,其他的大家也可以根據工具類ScheduleUtils自行進行調用,不難。
思路:定時任務和觸發器的注冊不再多說,主要是本項目的定時任務的創建和定時任務的運行。
首先是定時任務的創建,創建過程中將數據庫中查出的實體類放入jobDetail。
其次是定時任務的運行,是采用獲取bean的形式,之后通過反射獲取對應的方法,並傳入參數。
大致就是這些,最后附上gitHub源碼地址:https://github.com/SweetPiglet/demo-quartz