1.引入依赖
<!--quartz-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-quartz</artifactId>
</dependency>
<!--lombok-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
2.创建一个定时计划访问的任务
/**
* @author qx
* @Descripion: 定义一个计划任务
*/
@Slf4j
public class SimpleTask extends QuartzJobBean {
@Override
protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
log.info("这是一个简单的quartz计划任务");
}
}
3.定时配置 主要配置JobDetail(作业实例)和Trigger(作业触发机制)
/**
* @author qx
* @Descripion: 配置JobDetail和Trigger
*/
@Configuration
public class TaskConfig {
@Bean
public JobDetail simpleTask(){
return JobBuilder.newJob(SimpleTask.class)
.withIdentity("simple-task")
.withDescription("简单任务")
.storeDurably()
.build();
}
@Bean
public Trigger simpleTaskTrigger(){
// 定义3秒钟执行一次任务计划
CronScheduleBuilder cronScheduleBuilder = CronScheduleBuilder.cronSchedule("0/3 * * * * ?");
return TriggerBuilder.newTrigger()
.withIdentity("simple-task-trigger")
.forJob(simpleTask())
.withSchedule(cronScheduleBuilder)
.build();
}
}
4.运行项目,查看Quartz启动日志。
023-05-19T17:48:48.519+08:00 INFO 8480 --- [ main] org.quartz.core.QuartzScheduler : Scheduler meta-data: Quartz Scheduler (v2.3.2) 'quartzScheduler' with instanceId 'NON_CLUSTERED'
Scheduler class: 'org.quartz.core.QuartzScheduler' - running locally.
NOT STARTED.
Currently in standby mode.
Number of jobs executed: 0
Using thread pool 'org.quartz.simpl.SimpleThreadPool' - with 10 threads.
Using job-store 'org.quartz.simpl.RAMJobStore' - which does not support persistence. and is not clustered.
5.查看定时任务日志 3秒钟执行一次定时任务
2023-05-19T17:48:51.001+08:00 INFO 8480 --- [eduler_Worker-2] com.example.javastack.task.SimpleTask : 这是一个简单的quartz计划任务
2023-05-19T17:48:54.000+08:00 INFO 8480 --- [eduler_Worker-3] com.example.javastack.task.SimpleTask : 这是一个简单的quartz计划任务
2023-05-19T17:48:57.002+08:00 INFO 8480 --- [eduler_Worker-4] com.example.javastack.task.SimpleTask : 这是一个简单的quartz计划任务
2023-05-19T17:49:00.002+08:00 INFO 8480 --- [eduler_Worker-5] com.example.javastack.task.SimpleTask : 这是一个简单的quartz计划任务
2023-05-19T17:49:03.002+08:00 INFO 8480 --- [eduler_Worker-6] com.example.javastack.task.SimpleTask : 这是一个简单的quartz计划任务
2023-05-19T17:49:06.002+08:00 INFO 8480 --- [eduler_Worker-7] com.example.javastack.task.SimpleTask : 这是一个简单的quartz计划任务
2023-05-19T17:49:09.002+08:00 INFO 8480 --- [eduler_Worker-8] com.example.javastack.task.SimpleTask : 这是一个简单的quartz计划任务