SpringBoot简单整合Quartz实现定时任务

Quartz

        Quartz是一个定时任务框架。这里要介绍一下Quartz里的几个非常核心的接口。

Scheduler接口

        Scheduler翻译成调度器,Quartz通过调度器来注册、暂停、删除Trigger和JobDetail。Scheduler还拥有一个SchedulerContext,顾名思义就是上下文,通过SchedulerContext我们可以获取到触发器和任务的一些信息。

Trigger接口

        Trigger可以翻译成触发器,通过cron表达式或是SimpleScheduleBuilder等类,指定任务执行的周期。系统时间走到触发器指定的时间的时候,触发器就会触发任务的执行。

JobDetail接口

        Job接口是真正需要执行的任务。JobDetail接口相当于将Job接口包装了一下,Trigger和Scheduler实际用到的都是JobDetail。

整合过程

        引入依赖

        Gradle

    implementation 'org.springframework.boot:spring-boot-starter-quartz'

        maven



    org.springframework.boot
    spring-boot-starter-quartz

TimingTask

         创建TimingTask类,并继承 QuartzJobBean 类,重写 void executeInternal(JobExecutionContext jobExecutionContext) 方法

public class TimingTask extends QuartzJobBean {

    @Override
    protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
        System.out.println("定时任务开始了......");
    }

}

QuartzConfig

        创建 Quartz定时任务配置类(QuartzConfig.java),添加 @Configuration 注解表示为配置类,并编写相关配置信息,设置每24小时执行一次

@Configuration
public class QuartzConfig {

    private static final String SEARCH_TASK_IDENTITY = "TaskQuartz";

    @Bean
    public JobDetail quartzDetail() {
        return JobBuilder.newJob(TimingTask.class).withIdentity(SEARCH_TASK_IDENTITY).storeDurably().build();
    }

    @Bean
    public Trigger quartzTrigger() {
        //每24小时执行一次
        SimpleScheduleBuilder scheduleBuilder = SimpleScheduleBuilder.simpleSchedule()
//                .withIntervalInSeconds(120) //设置时间周期单位秒
                .withIntervalInHours(24) //24个小时执行一次
                .repeatForever();
        return TriggerBuilder.newTrigger().forJob(quartzDetail())
                .withIdentity(SEARCH_TASK_IDENTITY)
                .withSchedule(scheduleBuilder)
                .build();
    }


}

你可能感兴趣的:(JAVA,SpringBoot,Quartz,定时任务,Java,框架)