quartz 定時任務基礎

2021-09-25 11:07:08 字數 1598 閱讀 5710

最近專案中使用到了定時任務, 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.配...