Spring實現Quartz自動配置的方法詳解
1. 開啟Quartz自動配置
QuartzAutoConfiguration自動為Quartz的自動配置類,它的創(chuàng)建了SchedulerFactoryBean。
首先通過QuartzAutoConfiguration自動配置類可以看到,要實現Quartz自動配置,需要存在三個類Scheduler.class, SchedulerFactoryBean.class, PlatformTransactionManager.class,其中
- Scheduler所在包quartz-2.3.0.jar
- SchedulerFactoryBean所在包spring-context-support-5.2.10.RELEASE.jar
- PlatformTransactionManager所在包spring-tx-5.2.10.RELEASE.jar 因此需要確保這三個Jar包在pom文件中存在。
Quartz的坐標示例:
<dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <version>2.3.0</version> </dependency>
2. Quartz自動配置的實現過程
2.1 核心類圖
下圖展示了Quartz的核心類圖,其中
- Scheduler是Quartz調度器的主接口;
- SchedulerFactory是調度器工廠接口,用戶獲取調度器實例;
- StdScheduler是Scheduler的一個實現類,同時也是一個代理類,它會將所有的方法調用直接傳遞給內部的QuartzScheduler對象;RemoteScheduler是Scheduler的另一個實現類,同時也是一個代理類,它會將所有的方法調用通過RMI傳遞給遠程的QuartzScheduler對象;
- StdSchedulerFactory是SchedulerFactory的實現類,它會創(chuàng)建QuartzScheduler對象,并返回其代理對象StdScheduler;
- QuartzSchedulerResources包含所有的資源,包括JobStore、線程池信息等;
- QuartzSchedulerThread是觸發(fā)和執(zhí)行任務的主線程;
2.2 核心方法
- 準備SchedulerFactory -> StdSchedulerFactory
- 準備Scheduler -> StdScheduler
- 注冊監(jiān)聽器
- 注冊任務和觸發(fā)器
3. 任務調度執(zhí)行
3.1 大致流程
任務調度的大致流程:
- 如果線程池有可用線程,獲取待執(zhí)行Trigger;
- 獲取觸發(fā)器Trigger的觸發(fā)任務,構造JobRunShell;
- 放入線程池執(zhí)行任務,默認使用線程池實現 org.quartz.simpl.SimpleThreadPool;
3.2 調整線程池的大小
線程池的默認大小為10,可以通過配置文件調整默認線程池的大小
spring: quartz: properties: org: quartz: threadPool: threadCount: 15
本文從如何開啟Quartz自動配置入手,介紹了自動配置的核心類和自動配置的實現過程,以及任務調度的大致執(zhí)行邏輯,最后介紹了如何通過Spring配置調整線程池的大小,希望對大家有所幫助。
到此這篇關于Spring實現Quartz自動配置的方法詳解的文章就介紹到這了,更多相關Spring實現Quartz自動配置內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
idea在工具欄中顯示快速創(chuàng)建包和類的圖標的詳細步驟
點擊需要創(chuàng)建包或者類的位置,在點擊對用的圖標就可以快速創(chuàng)建類或者包了,下面小編給大家介紹idea在工具欄中顯示快速創(chuàng)建包和類的圖標的詳細步驟,感興趣的朋友一起看看吧2024-02-02簡單說明Java的Struts框架中merge標簽的使用方法
這篇文章主要簡單介紹了Java的Struts框架中merge標簽的使用方法,Struts是Java的SSH三大web開發(fā)框架之一,需要的朋友可以參考下2015-12-12SpringBoot使用Atomikos技術整合多數據源的實現
這篇文章主要介紹了SpringBoot使用Atomikos技術整合多數據源的實現,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-03-03解決Maven打包只有幾十K,運行報錯no main manifest attribute
這篇文章主要介紹了解決Maven打包只有幾十K,運行報錯no main manifest attribute問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-06-06