分散式任務調度框架ApiBoot Quartz內的兩種任務存儲方式
- 2020 年 2 月 13 日
- 筆記

知識改變命運,擼碼使我快樂,2020繼續遊走在開源界!!! 點贊再看,養成習慣 開源框架ApiBoot源碼倉庫(您的Star是對我最大的支援): https://gitee.com/minbox-projects/api-boot
前言
Quartz
是一款比較優秀的分散式任務調度框架,ApiBoot
對其封裝之前就有兩種任務存儲方式,分別是:memory
(記憶體方式)、jdbc
(資料庫方式),不過我們需要編寫一些繁瑣的程式碼配置,ApiBoot
實現了集成後,可快速應用到項目中,而且還提供了 ApiBootQuartzService 介面用於操作任務的狀態、有效性、新任務創建等,提供了一些常用方法,使用時只需要注入即可,因為該類在 ApiBootQuartzAutoConfiguration 自動化配置類中已經做了實例化。
任務存儲
之前有提到Quartz
提供了兩種任務存儲的方式,這兩種存在什麼區別呢?
- 記憶體方式:將任務臨時存儲到記憶體中,僅支援單項目部署,項目重啟後任務會失效,不支援由調度器控制任務漂移,不建議使用。
- 資料庫方式:
Quartz
提供了多種資料庫的所需表結構腳本,它內部通過DataSource
來操作數據,支援分散式方式部署、支援任務漂移,項目重啟後任務不會丟失,直到任務執行完成後才會被從資料庫內清除。
默認方式
ApiBoot
在整合Quartz
之後將記憶體方式
(memory)作為默認的任務存儲方式,默認方式下不需要一行程式碼的配置就可以實現集成,通過ApiBootQuartzService#newJob
方法就可以實現任務的初始化運行,還可以指定Once
、Loop
、Cron
三種方式的任意一種來運行任務,使用方式詳見:分散式調度框架Quartz衍生出的三種任務類型,你用過幾個?
資料庫方式
Quartz
針對不同資料庫類型提供了代理介面DriverDelegate
,不同資料庫類型都會有該代理介面的實現類,而我們平時所用到的則為StdJDBCDelegate
,該類內包含了Quartz
操作資料庫表內數據的全部方法。
數據腳本
Quartz
針對不同類型的資料庫分別提供了 建表語句,使用時請按照腳本名稱自行選擇。
ApiBoot Quartz啟用資料庫方式
啟用的方式很簡單,只需要在application.yml/application.properties
文件內添加如下配置:
api: boot: quartz: # 配置使用Jdbc方式存儲任務 job-store-type: jdbc
注意事項:既然啟用資料庫方式,那麼你的項目中必須要有
數據源
、資料庫驅動
、實例化數據源
(實例化DataSource
的工作一般是ORM框架來擔任,如:ApiBoot MyBatis Enhance)等依賴。
敲黑板,劃重點
本章主要介紹了ApiBoot
整合Quartz
後的任務存儲方式配置方式以及提供的不同資料庫的對應建表腳本。
如果你對
ApiBoot
開源框架在使用方面感覺不順手,歡迎提出您的寶貴 意見,讓開源框架走更遠的路、服務更多的開發者!!! 作者個人 部落格 使用開源框架 ApiBoot 助你成為Api介面服務架構師