SpringBoot動態定時任務

2021-10-21 20:46:41 字數 1603 閱讀 9381

其實schedulingconfigurer實現方法很簡單,只需要實現schedulingconfigurer並重寫configuretasks方法,在啟動類必須加上@enablescheduling註解即可。

@configuration

@enablescheduling

@slf4j

public class ruletask implements schedulingconfigurer

/*** 重新整理任務

* cronlist是資料庫查出來的定時任務列表

* @param rulelist

*/public void refresh(listcronlist)

}if (cronlist != null)

//如果執行時間發生了變化,則取消當前的定時任務

if (scheduledfutures.containskey(warcron.getcronid()))

crontask task = new crontask(

new runnable()

}, warcron.getcron()

);scheduledfuture<?> future = registrar.getscheduler().schedule(task.getrunnable(), task.gettrigger());

crontasks.put(warcron.getcronid(), task);

scheduledfutures.put(warcron.getcronid(), future);}}

}/**

* 判斷是否有該任務

** @param warcronlist

* @param cronid

* @return

*/private boolean exists(listwarcronlist, long cronid)

}return false;

}}

每次新增編輯刪除資料庫中的任務時都需重新整理下任務 以達到任務的動態變化

啟動boot時也需執行refresh方法;

/**

* @author: pandar

* @date: 2021/3/12 0012 上午 11:57

* @description: 專案啟動後重新整理定時任務

*/@component

@autowired

private ruletask ruletask;

@autowired

private warcronservice warcronservice;

@override

listwarcronlist = warcronservice.selectwarcronall();

ruletask.refresh(rulelist);

}}

資料庫表結構

cron_id

cron

delay

10/2 * * * * ?02

0/7 * * * * ?

5

springboot動態定時任務

前提概述 springboot定時器開發特別簡單,本篇文章不做介紹 通過配置 enablescheduling和 scheduled cron 實現 動態定時器相對複雜,大概有兩種實現方式 1.讀取資料庫的cron引數,2.讀取配置檔案cron引數。我這邊採用讀取配置檔案的方式簡單的介紹一下如何使用...

springboot動態定時任務

spring boot通過註解 enablescheduling和 scheduled實現的是靜態定時任務,不能動態新增 停止 修改等.本文通過threadpooltaskscheduler實現定時任務動態增刪改.建立threadpooltaskscheduler bean public threa...

SpringBoot 動態定時任務

最近在工作中遇到了springboot 動態執行定時任務的場景,通過資料庫動態指定任務的執行頻率,禁用或啟動定時任務等,通過尋找資料,成功解決了這一場景,一起分享一下吧 1 資料庫設計 create table spring scheduled cron cron id int 11 notnull...