SpringBoot2.0實戰(35)整合Quartz之基於數據庫動態管理任務

SpringBoot2.0實戰(35)整合Quartz之基於數據庫動態管理任務

在前面的文章中,我們已實現了基於內存動態管理 Quartz 任務

本章將實現對任務信息及狀態持久化至數據庫。

SpringBoot2.0實戰(35)整合Quartz之基於數據庫動態管理任務

目標

整合 Quartz,基於 mysql 實現對 Quartz 任務增刪查改、暫停及恢復

思路

任務管理完全委託 Scheduler 類進行操作,所以使用內存進行存儲與使用數據庫進行存儲,只是在存儲策略上的一個改變,這並不影響我們的操作,所以,本章與上一章中的操作部分代碼,完全一樣。

SpringBoot 提供的 QuartzAutoConfiguration 已經為我們進行了封裝,所以只需要設置數據源並修改 JobStoreType 參數為 jdbc 即可

SpringBoot2.0實戰(35)整合Quartz之基於數據庫動態管理任務

實戰

第一步:初始化數據庫

Quartz 已經為不同數據庫準備了初始化腳本,腳本路徑為 org/quartz/impl/dbcjobstore,腳本名稱為 tables_@@platform@@.sql,其中 platform 會使用數據庫名稱替換。

因為本章使用 mysql 數據庫作為示例,搜索 tables_mysql_innodb.sql 文件,在數據庫中執行。

第二步:添加依賴

引入 Spring Boot Starter 父工程

SpringBoot2.0實戰(35)整合Quartz之基於數據庫動態管理任務

添加 spring-boot-starter-quartz、jpa 及 mysql 的依賴,添加後的整體依賴如下

SpringBoot2.0實戰(35)整合Quartz之基於數據庫動態管理任務

第三步:配置

  • 配置數據源
  • 配置 Jpa
  • 配置 Quartz,job-store-type 設置為 jdbc,表示使用數據庫進行數據存儲
SpringBoot2.0實戰(35)整合Quartz之基於數據庫動態管理任務

第四步:編寫定時任務執行類

需要繼承 QuartzJobBean 類

SpringBoot2.0實戰(35)整合Quartz之基於數據庫動態管理任務

第四步:實現增刪查改

對任務的增刪查改都是基於 Scheduler 類,SpringBoot 自帶的 QuartzAutoConfiguration 對其進行了註冊。

對任務的增刪查改操作使用工具類 QuartzUtils 來進行實現。

SpringBoot2.0實戰(35)整合Quartz之基於數據庫動態管理任務

編寫 QuartzUtils 工具類

SpringBoot2.0實戰(35)整合Quartz之基於數據庫動態管理任務

第五步:驗證

  • 創建任務

請求地址 http://localhost:8080/add?job=job1&name=user&cron=0/5 * * * * ?,創建一個名稱為 job1 的任務,每五秒執行一次查看日誌

<code>execute timeJob at 06:14:39: hello user
execute timeJob at 06:14:44: hello user
execute timeJob at 06:14:49: hello user/<code>
  • 修改任務

請求地址 http://localhost:8080/add?job=job1&name=user&cron=0/1 * * * * ?,修改名稱為 job1 的任務,變為每秒執行一次查看日誌

<code>execute timeJob at 06:14:55: hello user
execute timeJob at 06:14:56: hello user
execute timeJob at 06:14:57: hello user/<code>
  • 暫停和重啟任務

請求地址 http://localhost:8080/pause?job=job1,暫停任務job1

請求地址 http://localhost:8080/resume?job=job1,重啟任務job1

源碼地址

本章源碼 : https://gitee.com/gongm_24/spring-boot-tutorial.git


分享到:


相關文章: