java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > SpringBoot2中整合Quartz

在SpringBoot2中整合Quartz实践

作者:kekezhu0000

文章介绍了如何在Spring Boot项目中使用Quartz进行定时任务调度,首先,需要在pom.xml中添加依赖,然后配置Quartz属性,创建一个实现Job接口的类,配置Trigger和Scheduler,并在Spring Boot应用中运行,通过访问特定端点,可以查看Quartz Scheduler的详细信息

1. 添加依赖

首先,你需要在你的pom.xml文件中添加Spring Boot和Quartz的依赖。

确保你的Spring Boot版本是2.x。

<dependencies>
    <!-- Spring Boot Starter -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
    </dependency>
    <!-- Spring Boot Starter Quartz -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-quartz</artifactId>
    </dependency>
</dependencies>

2. 配置Quartz

你可以通过application.propertiesapplication.yml文件来配置Quartz的基本属性,例如:

# application.properties
spring.quartz.job-store-type=memory
spring.quartz.properties.org.quartz.scheduler.instanceName=MyScheduler
spring.quartz.properties.org.quartz.scheduler.instanceId=AUTO

或者使用YAML格式:

# application.yml
spring:
  quartz:
    job-store-type: memory
    properties:
      org:
        quartz:
          scheduler:
            instanceName: MyScheduler
            instanceId: AUTO

3. 创建Job类

创建一个实现了org.quartz.Job接口的类。

例如:

import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.stereotype.Component;

@Component
public class MyJob implements Job {
    @Override
    public void execute(JobExecutionContext context) throws JobExecutionException {
        System.out.println("Executing MyJob");
        // 在这里添加你的业务逻辑代码
    }
}

4. 配置Trigger和Scheduler

你可以使用@Bean注解在配置类中定义一个JobDetailTrigger,并将它们注册到Quartz Scheduler中。

例如:

import org.quartz.*;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import static org.quartz.JobBuilder.newJob;
import static org.quartz.SimpleScheduleBuilder.simpleSchedule;
import static org.quartz.TriggerBuilder.newTrigger;
import static org.quartz.DateBuilder.futureDate;
import static org.quartz.TimeConstants.*;

@Configuration
public class QuartzConfig {
    @Bean
    public JobDetail myJobDetail() {
        return newJob(MyJob.class).withIdentity("myJob").storeDurably().build();
    }
    
    @Bean
    public Trigger myJobTrigger() {
        return newTrigger().forJob(myJobDetail())
                           .withIdentity("myTrigger")
                           .startAt(futureDate(5, SECOND)) // 5秒后开始执行任务
                           .withSchedule(simpleSchedule().withIntervalInSeconds(10).repeatForever()) // 每10秒重复执行一次任务
                           .build();
    }  
}

5. 运行你的Spring Boot应用

现在,当你运行你的Spring Boot应用时,Quartz将会根据配置自动调度任务。

你可以看到控制台输出定时任务的执行结果。确保你的Spring Boot应用能够正确启动并且没有异常。

如果一切设置正确,你应该能看到定时任务按照预定计划执行。

你可以通过访问/actuator/quartz端点(如果你启用了Spring Boot Actuator的话)来查看更多关于Quartz Scheduler的详细信息。

例如:

http://localhost:8080/actuator/quartz/triggers 或 http://localhost:8080/actuator/quartz/jobs。

确保你已经包含了Spring Boot Actuator的依赖,并在application.propertiesapplication.yml中启用了相应的端点:

management.endpoints.web.exposure.include=*

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文