剛出爐熱騰騰的定時任務可視化管理系統

定時任務也算是我們日常開發中比較常見的需求了,市面上也有很多成熟的框架:

  • quartz
  • elastic-job
  • xxl-job
  • ...

不過小夥伴們知道,其實我們 Spring 框架中也提供了相應的定時任務,這個定時任務通過 @EnableScheduling 註解開啓,松哥之前也寫過文章和大家分享這個註解的基本用法:

不過之前的定時任務都是固定的,提前寫死的,沒法動態配置,前兩天有小夥伴問松哥如何實現定時任務的動態配置?

這個東西要是基於 xxl-job 之類的框架來做其實是比較容易的,不過用 Spring 自帶的 @EnableScheduling 註解其實也能實現,而且並不難,松哥基於此火急火燎的寫了一個,今天先和大家聊聊大致用法,後面抽空再寫一篇文章介紹實現原理。

項目已開源,項目地址:

食用方式

  1. 克隆項目:git clone https://github.com/lenve/scheduling.git
  2. 本地數據庫創建一個名爲 scheduling 的庫。
  3. 修改配置文件 src/main/resources/application.yaml,主要修改數據庫連接的用戶名和地址。
  4. 啓動項目。
  5. 瀏覽器訪問 http://localhost:8080,可以看到如下頁面:

表示啓動成功。

功能介紹

  1. 項目啓動時,會自動從數據庫中加載狀態爲 1 的定時任務並開始執行,1 表示處於開啓狀態的定時任務,0 表示處於禁用狀態的定時任務。
  2. 點擊頁面上的添加作業按鈕,可以添加一個新的定時任務,新任務的 Bean 名稱、方法名稱以及方法參數如果和已有的記錄相同,則認爲是重複作業,重複作業會添加失敗。

添加作業的頁面如下:

這裏涉及到幾個參數,含義如下:

  • Bean 名稱:這是項目中注入 Spring 的 Bean 名稱,測試代碼中以 org/javaboy/scheduling02/service/SchedulingTaskDemo.java 爲例。
  • 方法名稱:參數 1 中 bean 裏邊的方法名稱。
  • 方法參數:參數 2 中方法的參數。
  • Cron 表達式:定時任務的 Cron 表達式。
  • 作業狀態:開啓和禁用兩種。開啓的話,添加完成後這個定時任務就會開始執行,禁用的話,就單純只是將記錄添加到數據庫中。

作業添加成功提示如下:

作業添加失敗提示如下:

  1. 點擊作業編輯,可以修改作業的各項數據:

修改後會立馬生效。

  1. 點擊作業刪除,可以刪除一個現有的作業。假如刪除的作業正在執行,則先停止該作業,然後刪除。
  2. 點擊列表中的 switch 按鈕也可以切換作業的狀態。

技術棧

  • SpringBoot
  • Jpa
  • MySQL
  • Spring Job
  • Vue

其他

這是一個學習的 Demo,並非完整項目,後面松哥會出一篇文章和大家分享具體的實現思路。

好啦,先說這麼多。

感興趣的小夥伴趕緊去體驗一把吧:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章