Java--SpringBoot-27-定时器-Quartz

简介: SpringBoot集成Quartz来实现定时任务处理。 Quartz的功能很强大,我们今天只看下在SpringBoot中最基础的使用是怎么实现的。

SpringBoot集成Quartz来实现定时任务处理。

       Quartz的功能很强大,我们今天只看下在SpringBoot中最基础的使用是怎么实现的。

先了解下我们在使用中遇到的一些API:

Job:调度器执行任务组件需要实现的接口。

QuartzJobBean:这个类实现了Job接口,继承它相当于实现Job。

JobDetail:用于定义作业的实例。

JobBuilder:定义/构建JobDetail实例。

Trigger:触发器,执行给定作业的计划的组件的实例。

SimpleTrigger:简单的实例

TriggerBuilder:用于定义/构建触发器实例。

Scheduler:与调度程序交互的主要API。

SimpleScheduleBuilder:可以创建一个简单的Scheduler生成器

一、引入依赖:

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-quartz</artifactId></dependency>


二、建两个定时任务业务类

类1:

packagecom.xing.studyboot.time.quartz;
importjava.util.Date;
importorg.quartz.JobExecutionContext;
importorg.quartz.JobExecutionException;
importorg.springframework.scheduling.quartz.QuartzJobBean;
/*** Quartz定时任务业务类* @author xing* @createTime*/publicclassTestQuartzServiceextendsQuartzJobBean {
@OverrideprotectedvoidexecuteInternal(JobExecutionContextcontext) throwsJobExecutionException {  
System.out.println("quartz定时任务1 "+newDate());
  }
}

类2:

packagecom.xing.studyboot.time.quartz;
importjava.util.Date;
importorg.quartz.JobExecutionContext;
importorg.quartz.JobExecutionException;
importorg.springframework.scheduling.quartz.QuartzJobBean;
/*** Quartz定时任务业务类2* @author xing* @createTime*/publicclassTest2QuartzServiceextendsQuartzJobBean {
@OverrideprotectedvoidexecuteInternal(JobExecutionContextcontext) throwsJobExecutionException {
System.out.println("quartz定时任务2 "+newDate());
  }
}



三、在配置类中生命作业实例,并绑定触发器

packagecom.xing.studyboot.time.config;
importorg.quartz.JobBuilder;
importorg.quartz.JobDetail;
importorg.quartz.SimpleScheduleBuilder;
importorg.quartz.Trigger;
importorg.quartz.TriggerBuilder;
importorg.springframework.context.annotation.Bean;
importorg.springframework.context.annotation.Configuration;
importcom.xing.studyboot.time.quartz.Test2QuartzService;
importcom.xing.studyboot.time.quartz.TestQuartzService;
/*** Quartz定时器配置* @author xing* @createTime*/@ConfigurationpublicclassQuartzConfig {
/***  创建作业的实例。Job- TestQuartzService* @return*/@BeanpublicJobDetailteatQuartzDetail(){
returnJobBuilder.newJob(TestQuartzService.class)
            .withIdentity("testQuartz")//如果没有设置,则将生成一个随机的、唯一的作业密钥。            .storeDurably()//默认值为false -此方法将该值设置为true。            .build();
    }
/***  创建作业的实例。Job- Test2QuartzService* @return test1Quartz*/@BeanpublicJobDetailteat2QuartzDetail(){
returnJobBuilder.newJob(Test2QuartzService.class)
            .withIdentity("test2Quartz")
            .storeDurably()
            .build();
    }
/***  创建触发器,并绑定到 作业实例-teatQuartzDetail* @return*/@BeanpublicTriggertestQuartzTrigger(){
SimpleScheduleBuilderscheduleBuilder=SimpleScheduleBuilder.simpleSchedule()
                .withIntervalInSeconds(10)  //设置时间周期单位秒                .repeatForever();//更新前面创建的simpleSchedule设置returnTriggerBuilder.newTrigger()
            .forJob(teatQuartzDetail())//指定Job任务                .withIdentity("testQuartz")
                .withSchedule(scheduleBuilder)//指定配置的时间                .build();
    }
/***  创建触发器,并绑定到 作业实例2-teat2QuartzDetail* @return test2Quartz*/@BeanpublicTriggertest2QuartzTrigger(){
SimpleScheduleBuilderscheduleBuilder=SimpleScheduleBuilder.simpleSchedule()
                .withIntervalInSeconds(5)  //设置时间周期单位秒                .repeatForever();//指定触发器将无限期重复。returnTriggerBuilder.newTrigger()
            .forJob(teat2QuartzDetail())//指定Job任务                .withIdentity("test2Quartz")
                .withSchedule(scheduleBuilder)//指定配置的时间                .build();
    }
}

四、启动项目:

image.png


       分析结果发现:任务1十秒一次,任务2五秒一次。


总结:

       Quartz功能很强大,不止可以设置间隔,包含了Spring Task的功能,还扩展了很多功能,比如暂停、删除等动态操作任务等等,具体的看包里的API即可。


END

目录
相关文章
|
4月前
|
安全 Java
Java多线程基础-10:代码案例之定时器(一)
`Timer` 是 Java 中的一个定时器类,用于在指定延迟后执行指定的任务。它常用于实现定时任务,例如在网络通信中设置超时或定期清理数据。`Timer` 的核心方法是 `schedule()`,它可以安排任务在延迟一段时间后执行。`
97 1
|
1月前
|
Java 关系型数据库 MySQL
SpringBoot 集成 Quartz + MySQL
SpringBoot 集成 Quartz + MySQL
66 1
|
2月前
|
Java 调度 开发者
Java定时器的使用方法与调度策略
Java定时器的使用方法与调度策略
|
3月前
|
SQL API 调度
Springboot2.4.5集成Quartz实现动态任务数据持久化-不怕重启服务
Springboot2.4.5集成Quartz实现动态任务数据持久化-不怕重启服务
|
3月前
|
Java API 调度
Web后端Javaee企业级开发之定时任务 Springboot整合任务框架Quartz和Task详解
Web后端Javaee企业级开发之定时任务 Springboot整合任务框架Quartz和Task详解
51 0
|
4月前
|
设计模式 安全 Java
Java 多线程系列Ⅳ(单例模式+阻塞式队列+定时器+线程池)
Java 多线程系列Ⅳ(单例模式+阻塞式队列+定时器+线程池)
|
3月前
|
运维 监控 Java
SpringBoot-ElasticJob封装快速上手使用(分布式定时器)
SpringBoot-ElasticJob封装快速上手使用(分布式定时器)
|
4月前
|
Java 调度
Java多线程基础-10:代码案例之定时器(二)
Java 多线程基础中,定时器(Timer)的实现通常使用 `PriorityBlockingQueue` 和 `wait/notify` 机制来管理任务。
32 0
|
4月前
|
存储 数据可视化 安全
Java全套智慧校园系统源码springboot+elmentui +Quartz可视化校园管理平台系统源码 建设智慧校园的5大关键技术
智慧校园指的是以物联网为基础的智慧化的校园工作、学习和生活一体化环境,这个一体化环境以各种应用服务系统为载体,将教学、科研、管理和校园生活进行充分融合。无处不在的网络学习、融合创新的网络科研、透明高效的校务治理、丰富多彩的校园文化、方便周到的校园生活。简而言之,“要做一个安全、稳定、环保、节能的校园。
70 6
|
4月前
|
Java Spring 容器
SpringBoot 使用Quartz执行定时任务对象时无法注入Bean问题
SpringBoot 使用Quartz执行定时任务对象时无法注入Bean问题
156 1