Spring实现Quartz自动配置的方法详解
作者:阿湯哥
这篇文章主要介绍了Spring实现Quartz自动配置的方法详解,如果想在应用中使用Quartz任务调度功能,可以通过Spring Boot实现Quartz的自动配置,以下介绍如何开启Quartz自动配置,以及Quartz自动配置的实现过程,需要的朋友可以参考下
1. 开启Quartz自动配置
QuartzAutoConfiguration自动为Quartz的自动配置类,它的创建了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的实现类,它会创建QuartzScheduler对象,并返回其代理对象StdScheduler;
- QuartzSchedulerResources包含所有的资源,包括JobStore、线程池信息等;
- QuartzSchedulerThread是触发和执行任务的主线程;
2.2 核心方法
- 准备SchedulerFactory -> StdSchedulerFactory
- 准备Scheduler -> StdScheduler
- 注册监听器
- 注册任务和触发器
3. 任务调度执行
3.1 大致流程
任务调度的大致流程:
- 如果线程池有可用线程,获取待执行Trigger;
- 获取触发器Trigger的触发任务,构造JobRunShell;
- 放入线程池执行任务,默认使用线程池实现 org.quartz.simpl.SimpleThreadPool;
3.2 调整线程池的大小
线程池的默认大小为10,可以通过配置文件调整默认线程池的大小
spring: quartz: properties: org: quartz: threadPool: threadCount: 15
本文从如何开启Quartz自动配置入手,介绍了自动配置的核心类和自动配置的实现过程,以及任务调度的大致执行逻辑,最后介绍了如何通过Spring配置调整线程池的大小,希望对大家有所帮助。
到此这篇关于Spring实现Quartz自动配置的方法详解的文章就介绍到这了,更多相关Spring实现Quartz自动配置内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!