开发者

Spring实现Quartz自动配置的方法详解

开发者 https://www.devze.com 2023-11-19 11:57 出处:网络 作者: 阿湯哥
目录1. 开启Quartz自动配置2. Quartz自动配置的实现过程2.1 核心类图2.2 核心方法3. 任务调度执行3.1 大致流程3.2 调整线程池的大小1. 开启Quartz自动配置
目录
  • 1. 开启Quartz自动配置
  • 2. Quartz自动配置的实现过程
    • 2.1 核心类图
    • 2.2 核心方法
  • 3. 任务调度执行
    • 3.1 大致流程
    • 3.2 调整线程池的大小

1. 开启Quartz自动配置

QuartzAutoConfiguration自动为Quartz的自动配置类,它的创建了SchedulerFactoryBean。

Spring实现Quartz自动配置的方法详解

首先通过QuartzAutoConfiguration自动配置类可以看到,要实现Quartz自动配置,需要存在三个类Scheduler.class, SchedulerFactoryBean.class, PlatformTransactionManager.class,其中

  • Scheduler所在包quartz-2.3.0.jar
  • SchedulerFactoryBean所在包spring-context-s编程upport-5.2.10.RELEASE.jar
  • PlatformTransactandroidionManager所在包spring-tx-5.2.10.RELEASE.jar 因此需要确保这三个Jar包在pom文件中存在。

Spring实现Quartz自动配置的方法详解

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包含所有的资源,包括JopythonbStore、线程池信息等;
  • QuartzSchedulerThread是触发和执行任务的主线程;

Spring实现Quartz自动配置的方法详解

2.2 核心方法

  • 准备SchedulerFactory -> StdSchedulerFactory
  • 准备Scheduler -> SandroidtdScheduler
  • 注册监听器
  • 注册任务和触发器

Spring实现Quartz自动配置的方法详解

3. 任务调度执行

3.1 大致流程

任务调度的大致流程:

  • 如果线程池有可用线程,获取待执行Trigger;
  • 获取触发器Trigger的触发任务,构造JobRunShell;
  • 放入线程池执行任务,默认使用线程池实现 org.quartz.simpl.SimpleThreadPool;

Spring实现Quartz自动配置的方法详解

3.2 调整线程池的大小

线程池的默认大小为10,可以通过配置文件调整默认线程池的大小

spring:
  quartz:
    properties:
      org:
        quartz:
          threadPool:
            threadCount: 15

本文从如何开启Quartz自动配置入手,介绍了自动配置的核心类和自动配置的实现编程过程,以及任务调度的大致执行逻辑,最后介绍了如何通过Spring配置调整线程池的大小,希望对大家有所帮助。

到此这篇关于Spring实现Quartz自动配置的方法详解的文章就介绍到这了,更多相关Spring实现Quartz自动配置内容请搜索编程客栈(www.devze.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客栈(www.devze.com)!

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号