【微服务】springboot整合quartz使用详解

目录

一、前言

二、quartz介绍

2.1 quartz概述

2.2 quartz优缺点

2.3 quartz核心概念

2.3.1 Scheduler

2.3.2 Trigger

2.3.3 Job

2.3.4 JobDetail

2.4 Quartz作业存储类型

2.5 适用场景

三、Cron表达式

3.1 Cron表达式语法

3.2 Cron表达式各元素说明

3.3 Cron表达式字符说明

四、环境准备

4.1 搭建步骤

4.1.1 拉取镜像

4.1.2 创建相关的数据目录

4.1.3 启动容器

五、springboot整合quartz

5.1 导入maven依赖

5.2 初始化数据表

5.3 增加配置文件

5.4 核心业务类

5.4.1 前端控制器类

5.4.2 业务实现类

5.4.3 mybatis-plus配置类

5.4.4 job执行任务类

5.5 效果测试

5.5.1 添加任务

5.5.2 暂停任务

5.6 补充说明

六、写在结尾


一、前言

在项目开发中,经常需要定时任务来处理一些业务,可以说定时任务的场景无处不在,比如定时同步数据,定时清理数据等,在使用SpringBoot框架中,简单的场景,可以考虑使用内置的注解就可以使用,但是如果需要调度的场景比较复杂,或者说需要更灵活的配置调度,就需要考虑采用其他的方案了,比如Quartz , xxl-job,elastic job等。

二、quartz介绍

2.1 quartz概述

Quartz 是 OpenSymphony 开源组织在 Job Scheduling 领域又一个开源项目,是完全由 Java 开发的一个开源任务日程管理系统,“任务进度管理器”就是一个在预先确定(被纳入日程)的时间到达时,负责执行(或者通知)其他软件组件的系统。Quartz 是一个开源的作业调度框架,它完全由 Java 写成,并设计用于 J2SE 和 J2EE 应用中,它提供了巨大的灵活性而不牺牲简单性。

官网地址:Quartz Enterprise Job Scheduler

2

  • 90
    点赞
  • 75
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 165
    评论
### 回答1: Spring Boot可以很方便地整合Quartz,实现定时任务的调度。下面是整合步骤: 1. 引入依赖 在pom.xml文件中添加以下依赖: ``` <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-quartz</artifactId> </dependency> ``` 2. 配置Quartz 在application.properties文件中添加以下配置: ``` # Quartz配置 spring.quartz.job-store-type=jdbc spring.quartz.jdbc.initialize-schema=always spring.quartz.properties.org.quartz.scheduler.instanceName=MyScheduler spring.quartz.properties.org.quartz.scheduler.instanceId=AUTO spring.quartz.properties.org.quartz.jobStore.class=org.quartz.impl.jdbcjobstore.JobStoreTX spring.quartz.properties.org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.StdJDBCDelegate spring.quartz.properties.org.quartz.jobStore.dataSource=myDataSource spring.quartz.properties.org.quartz.jobStore.tablePrefix=QRTZ_ spring.quartz.properties.org.quartz.dataSource.myDataSource.driverClassName=com.mysql.jdbc.Driver spring.quartz.properties.org.quartz.dataSource.myDataSource.URL=jdbc:mysql://localhost:3306/quartz?useUnicode=true&characterEncoding=utf-8&useSSL=false spring.quartz.properties.org.quartz.dataSource.myDataSource.username=root spring.quartz.properties.org.quartz.dataSource.myDataSource.password=root spring.quartz.properties.org.quartz.threadPool.class=org.quartz.simpl.SimpleThreadPool spring.quartz.properties.org.quartz.threadPool.threadCount=10 ``` 3. 创建Job 创建一个继承自QuartzJobBean的Job类,实现executeInternal方法,该方法中编写需要执行的任务逻辑。 ``` public class MyJob extends QuartzJobBean { @Override protected void executeInternal(JobExecutionContext context) throws JobExecutionException { // 任务逻辑 } } ``` 4. 创建Trigger 创建一个Trigger对象,指定任务的执行时间和执行频率。 ``` Trigger trigger = TriggerBuilder.newTrigger() .withIdentity("myTrigger", "myGroup") .withSchedule(CronScheduleBuilder.cronSchedule(" /5 * * * ?")) // 每5分钟执行一次 .build(); ``` 5. 创建Scheduler 创建一个Scheduler对象,将Job和Trigger添加到Scheduler中。 ``` Scheduler scheduler = new StdSchedulerFactory().getScheduler(); JobDetail jobDetail = JobBuilder.newJob(MyJob.class) .withIdentity("myJob", "myGroup") .build(); scheduler.scheduleJob(jobDetail, trigger); scheduler.start(); ``` 以上就是Spring Boot整合Quartz的基本步骤。 ### 回答2: SpringBoot是一个快速开发的微服务框架,可以帮助开发者快速搭建可用的微服务应用程序。Quartz是一个可靠的Java计划任务框架,它提供了一些便捷的功能,例如设置定时任务、指定执行策略、并发执行任务等。 SpringBoot可以与Quartz进行整合,以帮助开发者更快速、更方便地开发调度任务。整合QuartzSpringBoot需要进行如下几个步骤: 1.添加依赖 在pom.xml文件中添加quartz依赖: ``` <dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <version>2.2.1</version> </dependency> ``` 2.创建Quartz配置类 创建一个Quartz配置类,实现SchedulerFactoryBean接口。在此类中,配置Quartz的属性,例如线程池大小、数据源等。配置示例: ``` @Configuration public class QuartzConfig { @Autowired private DataSource dataSource; @Bean public SchedulerFactoryBean schedulerFactoryBean() { SchedulerFactoryBean schedulerFactoryBean = new SchedulerFactoryBean(); //设置数据源 schedulerFactoryBean.setDataSource(dataSource); //设置自定义Job Factory,以支持Spring DI schedulerFactoryBean.setJobFactory(jobFactory()); //设置线程池大小 schedulerFactoryBean.setThreadPoolSize(10); //设置Quartz属性,例如执行策略等 Properties properties = new Properties(); properties.setProperty("org.quartz.scheduler.instanceName", "MyQuartzScheduler"); properties.setProperty("org.quartz.threadPool.threadCount", "10"); properties.setProperty("org.quartz.jobStore.class", "org.quartz.impl.jdbcjobstore.JobStoreTX"); schedulerFactoryBean.setQuartzProperties(properties); return schedulerFactoryBean; } @Bean public JobFactory jobFactory() { return new AutowiringSpringBeanJobFactory(); } } ``` 3.创建任务 创建需要执行的任务类,并实现Job接口。任务类中执行的具体任务逻辑可以在execute()方法中实现。 ``` @Component public class MyJob implements Job { @Override public void execute(JobExecutionContext context) throws JobExecutionException { System.out.println("Job executed!"); } } ``` 4.添加任务到调度器 在需要执行任务的服务中,获取Quartz调度器,并将任务添加到调度器中。调度器可以通过SchedulerFactoryBean对象获取。任务执行的时间可以通过CronTriggerFactoryBean设置。 ``` @Service public class MyService { @Autowired private SchedulerFactoryBean schedulerFactoryBean; public void scheduleJob() throws SchedulerException { JobDetail jobDetail = newJob(MyJob.class) .withIdentity("myJob", "myGroup") .build(); CronTriggerFactoryBean triggerFactoryBean = new CronTriggerFactoryBean(); triggerFactoryBean.setJobDetail(jobDetail); triggerFactoryBean.setName("myTrigger"); triggerFactoryBean.setGroup("myTriggerGroup"); triggerFactoryBean.setCronExpression("0 0/5 * * * ?"); //每5分钟执行一次 Trigger trigger = triggerFactoryBean.getObject(); Scheduler scheduler = schedulerFactoryBean.getScheduler(); scheduler.scheduleJob(jobDetail, trigger); } } ``` 至此,我们已经成功整合QuartzSpringBoot,并可以通过调度任务运行应用程序。这样就可以更快速、更方便、更可靠地开发调度任务了。 ### 回答3: Spring Boot是一个轻量级的开发框架,它非常适合开发基于Java的web应用程序。Quartz是一个开源的、基于Java的定时任务调度框架,它可以实现复杂的任务调度需求。在Spring Boot中,使用Quartz框架可以方便地实现定时任务的调度。 首先,需要在pom.xml文件中添加QuartzSpring Boot的依赖库: ``` <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-quartz</artifactId> <version>${spring-boot-version}</version> </dependency> <dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <version>${quartz.version}</version> </dependency> ``` 然后,在主应用程序中添加@EnableScheduling注解来启用定时任务调度功能。此外,还需要在spring配置文件中配置Quartz相关的参数,例如数据源、触发器、任务等。以下是一个简单的Quartz配置文件示范: ``` quartz: job-store-type: jdbc jdbc: initialize-schema: always datasource: url: jdbc:h2:mem:quartz driver-class-name: org.h2.Driver username: password: properties: org.quartz.scheduler.instanceName: QuartzScheduler org.quartz.threadPool.threadCount: 10 ``` 在配置文件中,可以设置Quartz中任务调度的基本属性,例如线程池大小等等。同时,需要编写一个任务类,该类需要实现Spring提供的接口org.springframework.scheduling.quartz.QuartzJobBean。这样,在执行任务时,Spring就可以调用对应的executeInternal方法。 最后,在主应用程序中编写一个SchedulerFactoryBean,它将负责调度任务。在这个类中可以设置触发器的属性等等,最后通过getScheduler方法启动定时任务调度。 总体而言,基于Spring Boot整合Quartz框架开发定时任务非常方便,而且可以快速高效地完成各种任务调度需求。用户可以在Spring Boot的基础上自由定制任务调度的相关参数,实现复杂的业务功能。
评论 165
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

逆风飞翔的小叔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值