117.info
人生若只如初见

SpringBoot整合任务调度框架Quartz及持久化配置

Spring Boot提供了对Quartz任务调度框架的整合支持。Quartz是一个功能强大的任务调度框架,可以用于定时执行任务、计划任务等。

要整合Quartz,首先需要添加Quartz的依赖。在pom.xml文件中添加以下依赖:



    org.quartz-scheduler
    quartz

接下来,创建一个Quartz的配置类,用于配置Quartz的相关属性和任务调度。

@Configuration
public class QuartzConfig {

    @Bean
    public SchedulerFactoryBean schedulerFactoryBean() {
        SchedulerFactoryBean schedulerFactoryBean = new SchedulerFactoryBean();
        
        // 设置触发器
        schedulerFactoryBean.setTriggers(trigger1().getObject(), trigger2().getObject());
        
        // 设置任务
        schedulerFactoryBean.setJobDetails(jobDetail1().getObject(), jobDetail2().getObject());
        
        // 设置自动启动
        schedulerFactoryBean.setAutoStartup(true);
        
        return schedulerFactoryBean;
    }
    
    @Bean
    public JobDetailFactoryBean jobDetail1() {
        JobDetailFactoryBean jobDetailFactoryBean = new JobDetailFactoryBean();
        jobDetailFactoryBean.setJobClass(MyJob1.class);
        jobDetailFactoryBean.setDurability(true);
        jobDetailFactoryBean.setRequestsRecovery(true);
        return jobDetailFactoryBean;
    }
    
    @Bean
    public JobDetailFactoryBean jobDetail2() {
        JobDetailFactoryBean jobDetailFactoryBean = new JobDetailFactoryBean();
        jobDetailFactoryBean.setJobClass(MyJob2.class);
        jobDetailFactoryBean.setDurability(true);
        jobDetailFactoryBean.setRequestsRecovery(true);
        return jobDetailFactoryBean;
    }
    
    @Bean
    public CronTriggerFactoryBean trigger1() {
        CronTriggerFactoryBean cronTriggerFactoryBean = new CronTriggerFactoryBean();
        cronTriggerFactoryBean.setJobDetail(jobDetail1().getObject());
        cronTriggerFactoryBean.setCronExpression("0/5 * * * * ?");
        return cronTriggerFactoryBean;
    }
    
    @Bean
    public CronTriggerFactoryBean trigger2() {
        CronTriggerFactoryBean cronTriggerFactoryBean = new CronTriggerFactoryBean();
        cronTriggerFactoryBean.setJobDetail(jobDetail2().getObject());
        cronTriggerFactoryBean.setCronExpression("0/10 * * * * ?");
        return cronTriggerFactoryBean;
    }
}

在上面的配置类中,我们创建了两个JobDetail和两个CronTrigger,并将它们添加到SchedulerFactoryBean中。这样,当应用启动时,Quartz会根据配置的触发器和任务来执行定时任务。

最后,创建两个Job类,用于处理具体的任务逻辑。

public class MyJob1 implements Job {
    @Override
    public void execute(JobExecutionContext context) throws JobExecutionException {
        // 任务逻辑
    }
}

public class MyJob2 implements Job {
    @Override
    public void execute(JobExecutionContext context) throws JobExecutionException {
        // 任务逻辑
    }
}

这样,就完成了Spring Boot整合Quartz任务调度框架的配置。

如果需要将任务调度的配置进行持久化,可以使用Quartz提供的JobStore来实现。常用的JobStore有以下几种:

  • RAMJobStore:将任务调度的配置保存在内存中,应用关闭后数据将丢失。
  • JDBCJobStore:将任务调度的配置保存在数据库中,应用关闭后数据仍然存在。
  • JobStoreCMT:将任务调度的配置保存在数据库中,并且支持容器管理的事务。

要使用JDBCJobStore进行持久化配置,可以添加以下依赖:



    org.quartz-scheduler
    quartz-jdbc




    com.h2database
    h2

接着,在Quartz的配置类中添加以下代码:

@Bean
public SchedulerFactoryBean schedulerFactoryBean() {
    // ...
    
    // 设置持久化配置
    schedulerFactoryBean.setDataSource(dataSource());
    schedulerFactoryBean.setJobFactory(jobFactory());
    
    return schedulerFactoryBean;
}

@Bean
public DataSource dataSource()

未经允许不得转载 » 本文链接:https://www.117.info/ask/fe66aAzsLAAFfDFU.html

推荐文章

  • node.js中的http.response.end方法使用说明

    在Node.js中,http.response.end()方法是用来结束HTTP响应的方法。它可以接受一个可选的参数来作为响应体发送给客户端。
    使用http.response.end()方法的一般...

  • C++ Codejock.Xtreme.Toolkit.Pro使用方法

    C++ Codejock Xtreme Toolkit Pro 是一款用于创建用户界面的C++工具包,提供了一系列的控件和类来简化Windows应用程序的开发。下面是一些使用方法的示例: 引入C...

  • C# IsBackground作用

    C#的IsBackground属性用于设置线程是否为后台线程。当一个应用程序启动时,通常会启动一个或多个线程来执行各种任务。这些线程可以是前台线程或后台线程。
    ...

  • 电脑出现“损坏的图像”窗口提示dll没有被指定在Windows上

    这个问题可能是由于某个程序或驱动程序的损坏或错误引起的。下面是一些可能的解决方法: 重新启动电脑:有时候,简单地重新启动电脑就能解决一些临时的问题。 运...