分散式任務調度框架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方法就可以實現任務的初始化運行,還可以指定OnceLoopCron三種方式的任意一種來運行任務,使用方式詳見:分散式調度框架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介面服務架構師