持久化要先初始化Quartz数据库脚本。
1.添加使用Quartz需要的依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-quartz</artifactId>
</dependency>
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc6</artifactId>
<version>11.2.0.3</version>
</dependency>
<dependency>
<groupId>c3p0</groupId>
<artifactId>c3p0</artifactId>
<version>0.9.1.1</version>
</dependency>
2.properties配置文件
spring.quartz.properties.org.quartz.scheduler.instanceName=quartzScheduler
spring.quartz.properties.org.quartz.scheduler.instanceId=AUTO
spring.quartz.properties.org.quartz.jobStore.class=org.quartz.impl.jdbcjobstore.JobStoreTX
spring.quartz.properties.org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.oracle.OracleDelegate
spring.quartz.properties.org.quartz.jobStore.tablePrefix=QRTZ_
#是否集群
spring.quartz.properties.org.quartz.jobStore.isClustered=false
spring.quartz.properties.org.quartz.jobStore.clusterCheckinInterval=10000
spring.quartz.properties.org.quartz.jobStore.useProperties=false
spring.quartz.properties.org.quartz.jobStore.dataSource=quartzDataSource
spring.quartz.properties.org.quartz.dataSource.quartzDataSource.driver=oracle.jdbc.driver.OracleDriver
spring.quartz.properties.org.quartz.dataSource.quartzDataSource.URL=jdbc:oracle:thin:@***.***.**.**:1521:orcl
spring.quartz.properties.org.quartz.dataSource.quartzDataSource.user=******
spring.quartz.properties.org.quartz.dataSource.quartzDataSource.password=******
spring.quartz.properties.org.quartz.threadPool.class=org.quartz.simpl.SimpleThreadPool
spring.quartz.properties.org.quartz.threadPool.threadCount=20
spring.quartz.properties.org.quartz.threadPool.threadPriority=10
spring.quartz.properties.org.quartz.threadPool.threadsInheritContextClassLoaderOfInitializingThread=true
spring.quartz.job-store-type=jdbc
spring.quartz.autoStartup=true
3.代码部分
制定任务
@Slf4j
public class MJob1 implements Job {
@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
log.info(context.getJobDetail().getJobDataMap().get("data").toString());
}
}
添加删除任务
@RestController
public class TestController {
@Autowired
private Scheduler scheduler;
//新增任务
@GetMapping("/add")
public void add() throws SchedulerException {
//jobDataMap 可用于传输一些业务数据
JobDataMap jobDataMap = new JobDataMap();
jobDataMap.put("data", "6666666666666666666666666666666666");
JobDetail jobDetail =
JobBuilder.newJob(MJob1.class).withIdentity("jobName1", "jobGroup1").setJobData(jobDataMap).build();
Trigger trigger = TriggerBuilder.newTrigger()
.withIdentity("triggerName1", "triggerGroup1")
.startNow()
.withSchedule(CronScheduleBuilder.cronSchedule("* * * * * ?"))
.build();
scheduler.scheduleJob(jobDetail, trigger);
}
//删除任务
@GetMapping("/delete")
public void stop() throws SchedulerException {
//参数为jobName与jobGroup
scheduler.deleteJob(new JobKey("jobName1", "jobGroup1"));
}
}