c语言编程笔录

首页 >   > 笔记大全

笔记大全

SpringBoot2中如何使用QuartJob实现定时器实时管理

更新时间:2023-09-06

前言

Spring Boot 是一个基于 Spring 框架的快速开发、轻量级的微服务框架,它提供了丰富的功能和便捷的配置,用于简化开发人员构建独立的、生产级别的应用程序。其中,Quartz 是一个功能强大且灵活的任务调度库,可以在 Spring Boot 项目中使用 Quartz 实现定时器任务管理。

QuartzJob 的基本概念

在 Spring Boot 中使用 QuartzJob 实现定时器任务管理之前,我们首先需要了解一些基本的概念。

Job(任务): 定义我们要执行的任务,例如发送邮件、生成报表等。在 Quartz 中,Job 是一个接口,我们需要实现自己的任务类。

Trigger(触发器): 定义触发任务的规则,例如每天凌晨执行、每隔一段时间执行等。在 Quartz 中,Trigger 是一个用于定义调度计划的对象。

Scheduler(调度器): 负责创建和执行任务,根据 Trigger 触发规则来触发 Job 的执行。

Spring Boot 中使用 QuartzJob 实现定时器任务管理

以下是如何在 Spring Boot2 中使用 QuartzJob 实现定时器任务管理的步骤:

步骤一:添加依赖

在 pom.xml 中添加 Quartz 的依赖:

<dependency>
  <groupId>org.quartz-scheduler</groupId>
  <artifactId>quartz</artifactId>
  <version>2.3.2</version>
</dependency>

步骤二:创建任务类

创建一个实现了 Job 接口的任务类,例如:

public class MyJob implements Job {
  
  @Override
  public void execute(JobExecutionContext context) throws JobExecutionException {
    // 任务逻辑
    System.out.println("执行定时任务");
  }
}

步骤三:配置调度器和触发器

在 Spring Boot 的配置文件中,配置调度器和触发器:

spring.quartz.job-store-type=jdbc
spring.quartz.properties.org.quartz.threadPool.threadCount=10
@Configuration
public class QuartzConfig {
  
  @Bean
  public JobDetail myJobDetail() {
    return JobBuilder.newJob().ofType(MyJob.class)
      .storeDurably()
      .withIdentity("myJob")
      .withDescription("My Quartz Job")
      .build();
  }
  
  @Bean
  public Trigger myJobTrigger() {
    SimpleScheduleBuilder scheduleBuilder = SimpleScheduleBuilder.simpleSchedule()
      .withIntervalInSeconds(10)
      .repeatForever();
      
    return TriggerBuilder.newTrigger().forJob(myJobDetail())
      .withIdentity("myJobTrigger")
      .withDescription("My Quartz Job Trigger")
      .withSchedule(scheduleBuilder)
      .build();
  }
}

步骤四:启动定时任务

在需要启动定时任务的地方,注入调度器并启动任务:

@Service
public class MyService {
  
  @Autowired
  private Scheduler scheduler;
  
  public void startJob() throws SchedulerException {
    scheduler.start();
    scheduler.scheduleJob(quartzConfig.m