0
点赞
收藏
分享

微信扫一扫

SpringBoot使用Quartz创建定时任务的学习

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计划任务


举报

相关推荐

0 条评论