Quartz是一款功能強大的開源任務排程庫,不論是大型或是小型的Java系統、應用程式,幾乎皆可以整合到其中,Quartz可以創建簡單或複雜的工作排程,暨彈性又準確的執行程式編寫的內容,其開源是使用apache2的憑證,對Spring Boot也有相當高的整合性。
最小單位,當觸發器觸發時,程式會去呼叫excute方法做執行,JobDetail是由使用者編寫,並在Job註冊到Scheduler時生成,並且包含Job的狀態訊息(JobDataMap),因此Quartz不儲存Job實例,而是交由JobBuilder定義和建立實例,一個Job可以對應多個Trigger。。
Job的介面,因此我們可以實現介面來自定義自己的任務,其中JobExecutionContext紀錄上下文的各種訊息,為了避免任務執行還未結束就被再次觸發,可以加上@DisallowConcurrentExecution來解決這個問題。
用於觸發Job執行,且透過JobDataMap將依些參數傳給Job運行時使用,Quartz預設有多種觸發器,其中以SimpleTrigger和CronTrigger最為經常使用。
由schedulerFactory建立,負責新增、刪除並列出所有的Job和Trigger
Spring Boot 和 Quartz的整合性極高,可以透過pom檔引入套件,並自定義自己的Job Bean和Trigger Bean,Spring會透過DI的方式將Trigger註冊到SchedulerFactoryBean之中產生Scheduler,因此使用上只需要管理自己的Job和Trigger,無須管理其他東西,使開發上更簡潔快速。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-quartz</artifactId>
</dependency>