SpringBoot 整合 Quartz 定时任务框架

一、简单聊一聊 Quartz

Quartz 是一个完全由 Java 编写的开源作业调度框架,为在 Java 应用程序中进行作业调度提供了简单却强大的机制。

Quartz 其实就是通过一个调度线程不断的扫描数据库中的数据来获取到那些已经到点要触发的任务,然后调度执行它的。这个线程就是 QuartzSchedulerThread类。其run方法中就是quartz的调度逻辑。

另外,这是一个Demo,木有考虑并发、多任务执行等等状态的发生及处理情况,见谅。

1.1、Quartz 概念

Quartz 的几个核心概念

  1. Job

    表示一个工作,要执行的具体内容。此接口中只有一个方法

     void execute(JobExecutionContext context) 
    复制代码
  2. JobDetail 表示一个具体的可执行的调度程序,Job 是这个可执行程调度程序所要执行的内容,另外 JobDetail 还包含了这个任务调度的方案和策略。

  3. Trigger 代表一个调度参数的配置,什么时候去调。

  4. Scheduler 代表一个调度容器,一个调度容器中可以注册多个 JobDetail 和 Trigger。当 Trigger 与 JobDetail 组合,就可以被 Scheduler 容器调度了。

二、SpringBoot 使用 Quartz

2.1、基本步骤

基本步骤就那些,这篇也不是高大上讲原理和流程之类的,就是偏向实操,可能一些地方在代码中含有注释,就不再贴说明了~

基本:JDK 8、SpringBoot、MybatisPlus、Quartz

创建一个 SpringBoot 项目

导入相关依赖~

 <parent>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-parent</artifactId>
     <version>2.5.2</version>
     <relativePath/>
 </parent>
 ​
 <properties>
     <java.version>1.8</java.version>
     <maven.compiler.source>8</maven.compiler.source>
     <maven.compiler.target>8</maven.compiler.target>
 </properties>
 ​
 <dependencies>
     <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-web</artifactId>
     </dependency>
     <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-quartz</artifactId>
     </dependency>
     <dependency>
         <groupId>org.projectlombok</groupId>
         <artifactId>lombok</artifactId>
     </dependency>
     <dependency>
         <groupId>mysql</groupId>
         <artifactId>mysql-connector-java</artifactId>
     </dependency>
     <dependency>
         <groupId>com.baomidou</groupId>
         <artifactId>mybatis-plus-boot-starter</artifactId>
         <version>3.4.1</version>
     </dependency>
 ​
     <dependency>
         <groupId>cn.hutool</groupId>
         <artifactId>hutool-all</artifactId>
         <version>5.1.4</version>
     </dependency>
     <dependency>
         <groupId>com.alibaba</groupId>
         <artifactId>fastjson</artifactId>
         <version>1.2.76</version>
     </dependency>
 </dependencies>
复制代码

项目结构:

2.2、执行 Quartz 需要的SQL文件

找到 quartz 需要的 sql 文件,在数据库中执行,这也是Quartz持久化的基础~

往下滑,找到你需要的sql文件即可。

执行完的结果:

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Spring Boot整合Quartz框架可以实现定时任务的管理和调度。Quartz是一个开源的作业调度框架,可以用来实现各种定时任务,如定时发送邮件、定时备份数据等。在Spring Boot中,可以通过配置文件或注解的方式来实现Quartz整合。具体步骤如下: 1. 引入QuartzSpring Boot的依赖包。 2. 配置Quartz的数据源和调度器。 3. 创建Job类,实现execute方法,编写定时任务的逻辑。 4. 创建Trigger类,设置定时任务的触发器,如执行时间、重复次数等。 5. 在配置类中注入Job和Trigger,配置SchedulerFactoryBean。 6. 在Controller中注入SchedulerFactoryBean,通过调用Scheduler的方法来启动和停止定时任务。 以上就是Spring Boot整合Quartz框架的基本步骤,具体实现可以参考相关的教程和示例代码。 ### 回答2: Spring Boot是一个快速构建基于Spring框架的应用程序的工具,它提供了快速开发、配置简单、易于管理的方法。Quartz是一个稳定、可靠和高效的开源作业调度框架Quartz提供了许多功能,包括复杂定时任务任务调度、任务管理、集群支持、持久化等等。然而,Quartz的配置较为繁琐,需要考虑很多细节。为了避免这些麻烦,可以使用Spring Boot进行Quartz整合。 首先,在Spring Boot项目的pom.xml文件中添加Quartz的依赖: ``` <dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <version>2.3.2</version> </dependency> ``` 然后,在Spring Boot应用程序中配置Quartz,需要创建一个QuartzConfiguration类。这个类中包含了Quartz的基本配置信息,比如调度器工厂、作业存储、触发器、作业等等。以下是一个示例: ``` @Configuration public class QuartzConfiguration { @Bean public SchedulerFactoryBean schedulerFactoryBean() { SchedulerFactoryBean schedulerFactoryBean = new SchedulerFactoryBean(); schedulerFactoryBean.setJobFactory(jobFactory()); schedulerFactoryBean.setQuartzProperties(quartzProperties()); return schedulerFactoryBean; } @Bean public JobDetailFactoryBean jobDetailFactoryBean() { JobDetailFactoryBean factory = new JobDetailFactoryBean(); factory.setJobClass(MyJob.class); factory.setDescription("Invoke Sample Job service..."); factory.setDurability(true); return factory; } @Bean public SimpleTriggerFactoryBean simpleTriggerFactoryBean() { SimpleTriggerFactoryBean factoryBean = new SimpleTriggerFactoryBean(); factoryBean.setJobDetail(jobDetailFactoryBean().getObject()); factoryBean.setRepeatInterval(3000); factoryBean.setRepeatCount(SimpleTrigger.REPEAT_INDEFINITELY); return factoryBean; } @Bean public JobFactory jobFactory() { return new AutowiringSpringBeanJobFactory(); } @Bean public Properties quartzProperties() { PropertiesFactoryBean props = new PropertiesFactoryBean(); props.setLocation(new ClassPathResource("/quartz.properties")); props.afterPropertiesSet(); return props.getObject(); } } ``` 在这个配置类中,首先创建了调度器工厂,然后设置了作业存储、触发器和作业等等。这里要注意,作业需要实现Quartz的Job接口,同时,也需要添加一个AutwiringSpringBeanJobFactory,以便在作业中注入Spring Bean。 最后,在Spring Boot应用程序中定义一个Quartz作业类,实现Quartz的Job接口。在这个作业类中,编写需要执行的任务。 ``` public class MyJob implements Job { @Autowired private SampleJobService sampleJobService; @Override public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException { sampleJobService.executeSampleJob(); } } ``` 以上就是使用Spring Boot整合Quartz框架的基本步骤。通过这种方式,我们可以快速构建出一个强大、稳定和高效的作业调度系统,使得整个应用程序变得更加可靠和高效。 ### 回答3: Spring Boot 是一款非常流行的微服务框架,它可以帮助我们快速构建可扩展的应用程序。其中,Quartz 是一款流行的定时任务调度框架,它可以帮助我们在应用程序中实现定时任务调度的功能。本文将介绍 Spring Boot 整合 Quartz 框架的方法。 首先,我们需要在 Maven 中引入 Quartz 框架的依赖。在 pom.xml 文件中添加以下代码: ``` <dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <version>2.3.0</version> </dependency> ``` 然后,我们需要创建一个 Quartz 配置类,用于配置 Quartz 的属性。在该类中,我们需要创建一个 SchedulerFactoryBean 对象,用于创建 Quartz 的 Scheduler 对象。在 SchedulerFactoryBean 对象中,我们需要设置 DataSource 对象、JobFactory 对象、Bean 名称等属性。以下是一个示例: ``` @Configuration public class QuartzConfig { @Autowired private DataSource dataSource; @Autowired private ApplicationContext applicationContext; @Bean public JobFactory jobFactory() { AutowiringSpringBeanJobFactory jobFactory = new AutowiringSpringBeanJobFactory(); jobFactory.setApplicationContext(applicationContext); return jobFactory; } @Bean public SchedulerFactoryBean schedulerFactoryBean(JobFactory jobFactory) { SchedulerFactoryBean factory = new SchedulerFactoryBean(); factory.setDataSource(dataSource); factory.setJobFactory(jobFactory); factory.setApplicationContextSchedulerContextKey("applicationContext"); factory.setSchedulerName("QuartzScheduler"); factory.setApplicationContext(applicationContext); factory.setStartupDelay(10); return factory; } } ``` 以上代码中,我们创建了一个 JobFactory 对象,用于自动装配 Spring Bean。然后,我们创建了一个 SchedulerFactoryBean 对象,用于创建 Quartz 的 Scheduler 对象。SchedulerFactoryBean 对象中设置了 DataSource 对象、JobFactory 对象、Bean 名称等属性。 接下来,我们需要创建一个定时任务,该任务继承于 Quartz 的 Job 接口,实现 execute() 方法。例如: ``` @Component public class SampleJob implements Job { @Override public void execute(JobExecutionContext context) throws JobExecutionException { System.out.println("SampleJob is running..."); } } ``` 最后,我们需要将该任务添加到 Quartz 的 Scheduler 对象中,以实现定时执行。我们可以在应用程序启动后,使用 @PostConstruct 注解调用以下代码: ``` @Autowired private SchedulerFactoryBean schedulerFactoryBean; @PostConstruct public void init() throws Exception { Scheduler scheduler = schedulerFactoryBean.getScheduler(); JobDetail jobDetail = JobBuilder.newJob(SampleJob.class) .withIdentity("sampleJob", "sampleGroup") .build(); CronTrigger cronTrigger = TriggerBuilder.newTrigger() .withIdentity("sampleTrigger", "sampleGroup") .withSchedule(CronScheduleBuilder.cronSchedule("0/5 * * * * ?")) .build(); scheduler.scheduleJob(jobDetail, cronTrigger); scheduler.start(); } ``` 以上代码中,我们从 SchedulerFactoryBean 对象中获取了 Quartz 的 Scheduler 对象,并创建了一个 JobDetail 对象和一个 CronTrigger 对象,用于描述定时任务。然后,我们将这两个对象添加到 Scheduler 对象中,并启动了 Scheduler 对象。 至此,完成了 Spring Boot 整合 Quartz 框架的过程。我们可以在应用程序中添加多个定时任务,实现各种定时任务调度的功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值