SpringBoot整合Quartz(多任务)
Quartz的介绍
1.Scheduler – 核心调度器
2.Job – 任务
3.JobDetail – 任务描述
4.Trigger – 触发器
项目结构图
1)添加Maven依赖
<!-- quartz依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-quartz</artifactId>
</dependency>
2)添加配置方法 application-quartz.yml
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
4) 创建Job任务 (1)
package com.dream.quatrz.job;
import org.quartz.JobExecutionContext;
import org.springframework.scheduling.quartz.QuartzJobBean;
import java.util.Date;
public class MyJob1 extends QuartzJobBean {
@Override
protected void executeInternal(JobExecutionContext jobExecutionContext) {
System.out.println("Job1:" + new Date());
}
}
5)创建Job任务(2)
package com.dream.quatrz.job;
import org.quartz.JobExecutionContext;
import org.springframework.scheduling.quartz.QuartzJobBean;
import java.util.Date;
public class MyJob2 extends QuartzJobBean {
@Override
protected void executeInternal(JobExecutionContext jobExecutionContext) {
System.out.println("job2" + new Date());
}
}
6)创建Quartz配置类
package com.dream.quatrz.config;
import com.dream.quatrz.job.MyJob1;
import com.dream.quatrz.job.MyJob2;
import org.quartz.*;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class QuartzConfiguration {
@Bean
public JobDetail myJob1() {
return JobBuilder.newJob(MyJob1.class).withIdentity("MyJob1").storeDurably().build();
}
@Bean
public JobDetail myJob2() {
return JobBuilder.newJob(MyJob2.class).withIdentity("MyJob2").storeDurably().build();
}
@Bean
public Trigger myTrigger1() {
SimpleScheduleBuilder scheduleBuilder = SimpleScheduleBuilder
.simpleSchedule()
.withIntervalInSeconds(1)
.repeatForever();
return TriggerBuilder.newTrigger()
.forJob(myJob1())
.withIdentity("Trigger1")
.withSchedule(scheduleBuilder)
.build();
}
@Bean
public Trigger myTrigger2() {
CronScheduleBuilder cronScheduleBuilder = CronScheduleBuilder.cronSchedule("0/2 * * * * ?");
return TriggerBuilder.newTrigger()
.forJob(myJob2())
.withIdentity("Trigger2")
.withSchedule(cronScheduleBuilder)
.build();
}
}
7)CronSchedule的设置方法
8)运行结果