最近專案中使用到了定時任務, spring自帶的定時任務暫時不能完全滿足需求, 就將quartz引入到專案中來, 記錄下quartz的學習,便於日後回顧.
springboot2.x專案, 所需資源配置如下
1. pom.xml
org.springframework.boot
spring-boot-starter-quartz
2.1.4.release
2. quartz.properties檔案(如果不完全使用預設的配置, 則需要該檔案,以配置quartz定製化內容)
# 集群中用於標識,邏輯上屬於相同的程式
org.quartz.scheduler.instancename = myscheduler
org.quartz.threadpool.threadcount = 3
# 將定時任務資訊儲存到資料庫中, 如mysql
#org.springframework.scheduling.quartz.localdatasourcejobstore
# 將定時任務資訊儲存到內從中
org.quartz.jobstore.class = org.quartz.simpl.ramjobstore
quartz中常用的元件(job和trigger通過name和group屬性來唯一標識):
job:乙個介面, 介面中只有乙個方法, 用於標識乙個任務, 每個任務都需要實現該介面.主要用於定時任務的邏輯處理
// context 可以獲取到job的相關資訊, 及其引數等資訊
void execute(jobexecutioncontext context) throws jobexecutionexception;
jobbuilder: jobdetail的構造器, 用於配置生成的jobdetail例項資訊
jobdetail: job的例項, 主要配置定時任務的相關資訊, 如:name(名稱), group(所屬組), description(描述), jobdatamap(自定義的一些引數)
triggerbuilder: trigger的構造器, 用於配置生成的trigger例項的相關資訊
trigger: 用於觸發任務執行的元件, 主要配置觸發器的name(名稱), group(所屬組), description(描述), 觸發定時任務的時刻, 次數,間隔等相關配置
schedulebuilder: 觸發器配置job相關的執行資訊, 其實現有******schedulebuilder(指定具體的重複次數, 間隔等), cronschedulebuilder(cron表示式觸發job), dailytimeintervalschedulebuilder, calendarintervalschedulebuilder
scheduler: 定時任務排程器. 將job和trigger加入到scheduler,需要呼叫其start()方法後, 才能執行相關的定時任務. 呼叫shutdown()方法後將不會再觸發任何新的任務, 但正在執行的任務不會被立即中斷.
scheduler通過name和group管理trigger和job, trigger根據配置資訊觸發job的執行資訊.
quartz定時任務
此檔案被包含在spring配置檔案中,其中 引數 的值遵循如下規則 0 0 12 每天中午12點觸發 0 15 10 每天上午10 15觸發 0 15 10 每天上午10 15觸發 0 15 10 每天上午10 15觸發 0 15 10 2005 2005年的每天上午10 15觸發 0 14 在每天...
Quartz定時任務
排程器 負責時間監控,如果任務到了指定時間則呼叫器開始工作.觸發器 當排程器執行任務時,會呼叫觸發器開啟執行緒完成任務.job 定時任務統稱.jobdetail 定時任務的具體的細節 呼叫過程 新建立定時任務.將任務交給排程器管理 呼叫器負責監控時間,當到了指定的時間後.呼叫觸發器開啟新的執行緒去完...
quartz定時任務
以下 案例是基於spring boot框架。定義乙個定時任務,我們需要明白這個定時任務是要我們做什麼,什麼時候做。1.配置定時時間。在yml配置檔案中配置定時任務的時間。test singledef syncfilecron 0 0 7 時間配置依次是秒分時日月年,具體配置這裡不就詳細解釋了。2.配...