Spring Boot定时任务spring-boot-starter-quartz配置运行及测试

在Spring Boot中可以通过spring-boot-starter-quartz可以实现定时任务

Maven依赖


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

Bean配置

定时任务相关配置,比如我们设置定时任务时间间隔为3秒,具体看如下代码注释

@Configuration
public class CustomizeScheduleConfigTask {
    /**
     * 定时任务
     * @return
     */
    @Bean
    public JobDetail testJobDetail() {
        return JobBuilder.newJob(TestJobBean.class)
                .withIdentity("testJobDetail")
                .storeDurably()
                .build();
    }

    /**
     * 触发器,每间隔一段时间触发定时任务
     * @param jobDetail 具体执行的定时任务
     * @return
     */
    @Bean
    public Trigger testJobTrigger(@Qualifier("testJobDetail") JobDetail jobDetail) {
        ScheduleBuilder scheduleBuilder = SimpleScheduleBuilder
                .simpleSchedule()
                .withIntervalInSeconds(3) // 定时任务间隔时间
                .repeatForever(); // 触发器无限循环触发
        return TriggerBuilder.newTrigger()
                .forJob(jobDetail)
                .withIdentity("testJobTrigger")
                .withSchedule(scheduleBuilder)
                .build();
    }
}

定时任务实现

具体的定时任务内容,这里简单打印下当前线程和时间

@Service
public class TestJobBean extends QuartzJobBean {
    @Override
    protected void executeInternal(JobExecutionContext jobExecutionContext) {
        System.out.println("TestJobBean:::" + Thread.currentThread().getName() + ":::" + SimpleDateFormat.getDateTimeInstance().format(new Date()));
    }
}

运行项目可以看到打印的日志,每条任务之间的间隔是3秒

每个任务运行在不同的线程,后面线程会复用,说明有个线程池

TestJobBean:::quartzScheduler_Worker-3:::Aug 5, 2020 2:56:44 PM
TestJobBean:::quartzScheduler_Worker-4:::Aug 5, 2020 2:56:47 PM
TestJobBean:::quartzScheduler_Worker-5:::Aug 5, 2020 2:56:50 PM
TestJobBean:::quartzScheduler_Worker-6:::Aug 5, 2020 2:56:53 PM
TestJobBean:::quartzScheduler_Worker-7:::Aug 5, 2020 2:56:56 PM
TestJobBean:::quartzScheduler_Worker-8:::Aug 5, 2020 2:56:59 PM
TestJobBean:::quartzScheduler_Worker-10:::Aug 5, 2020 2:57:02 PM
TestJobBean:::quartzScheduler_Worker-2:::Aug 5, 2020 2:57:05 PM
TestJobBean:::quartzScheduler_Worker-3:::Aug 5, 2020 2:57:08 PM
TestJobBean:::quartzScheduler_Worker-1:::Aug 5, 2020 2:57:11 PM

 

 

 

 

 

 

 

你可能感兴趣的:(Spring,Boot,spring,boot,quartz,定时任务)