springboot2.x 整合quartz,實現任務的調度

在springboot2.x中已經集成了quartz的starter,咱們只需spring

一、在pom文件中引入數據庫

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-quartz</artifactId>
</dependency>

二、建立application-quartz.yml文件springboot

文件名以application爲前綴,是爲了在主配置文件(application.yml)中引入方便app

spring:
  quartz:
    #相關屬性配置
    properties:
      org:
        quartz:
          scheduler:
            instanceName: clusteredScheduler
            instanceId: AUTO
          jobStore:
            class: org.quartz.impl.jdbcjobstore.JobStoreTX
            driverDelegateClass: org.quartz.impl.jdbcjobstore.StdJDBCDelegate
            tablePrefix: QRTZ_
            isClustered: true
            clusterCheckinInterval: 10000
            useProperties: false
          threadPool:
            class: org.quartz.simpl.SimpleThreadPool
            threadCount: 10
            threadPriority: 5
            threadsInheritContextClassLoaderOfInitializingThread: true
    #數據庫方式
    job-store-type: jdbc
    # 初始化表結構
    # jdbc:
      # initialize-schema: never

三、在主配置文件中引入quartz配置ide

spring: 
  profiles:
    include: quartz

四、建立一個任務控制工具類,用來操做任務spring-boot

因爲在springboot 2.x中,已經默認支持了quartz,提供了調度器工廠(SchedulerFactory)和調度器的bean的定義,並經過以上文件配置完成,因此咱們這裏直接注入scheduler就能夠實現相應的功能。(具體操做略,搜索一下有好多)工具

@Component
public class QuartzManager {
    @Resource
    private Scheduler schedule;

...spa

}繼承

五、建立任務類實現Job接口或者繼承QuartzJobBean類。接口

此類中就能夠注入對應的Service實現具體業務。

六、若是想手動初始化任務,能夠建立TaskRunner並實現ApplicationRunner接口,實現run方法來組織定時任務。

@Override
public void run(ApplicationArguments args) throws Exception {
    LOGGER.info("初始化任務");
    String jobName = "abcJob";
    String jobGroup = "DEFAULT";
    String description = "負責清理超時的";
    String jobClassName = "com.xxx.AbcJob";
    String cronExpression = "0 0 0 * * ? *";
    quartzManager.addOrUpdateJob(AbcJob.class, jobName, jobGroup, cronExpression);
}

七、能夠使用QuartzManager實現各類任務的動態管理功能

相關文章
相關標籤/搜索