在前面的文章中,我們已實現了在 SpringBoot 項目中整合 Quartz 框架執行定時任務
但是需要我們手動編碼實現將任務註冊到 Quartz 框架,但是在實際項目中,我們需要對定時任務更加動態地控制。需要可以增刪查改,也可以暫停及恢復。
目標
整合 Quartz,實現使用 Quartz 定時任務增刪查改、暫停及恢復
實戰
第一步:添加依賴
引入 Spring Boot Starter 父工程
添加 spring-boot-starter-quartz 的依賴,添加後的整體依賴如下
第二步:編寫定時任務執行類
需要繼承 QuartzJobBean 類
第三步:實現增刪查改
對任務的增刪查改都是基於 Scheduler 類,SpringBoot 自帶的 QuartzAutoConfiguration 對其進行了註冊。
對任務的增刪查改操作使用工具類 QuartzUtils 來進行實現。
編寫 QuartzUtils 工具類
第四步:驗證
創建任務
請求地址 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
結束語
本文基於 Quartz 框架提供的 Scheduler 類實現了對定時任務的運態管理,所有的數據和狀態都將保存在內存中,這樣並不安全。接下來我們將實現使用數據庫持久化任務數據及狀態,敬請期待。
閱讀更多 死牛胖子的技術隨筆 的文章