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

目录
相关文章
|
Java
java使用Quartz任务调用crontab表达式的时候报错:Based on configured schedule, the given trigger will never fire
java使用Quartz任务调用crontab表达式的时候报错:Based on configured schedule, the given trigger will never fire
409 0
java使用Quartz任务调用crontab表达式的时候报错:Based on configured schedule, the given trigger will never fire
|
12月前
|
Java 应用服务中间件 Maven
Quartz-Java Web项目中使用Quartz
Quartz-Java Web项目中使用Quartz
106 0
|
存储 Java 调度
Java学习笔记:定时任务调度工具之Quartz(3)
Java学习笔记:定时任务调度工具之Quartz
114 0
|
Java 调度
Java学习笔记:定时任务调度工具之Quartz(2)
Java学习笔记:定时任务调度工具之Quartz
196 0
|
存储 设计模式 Java
Java学习笔记:定时任务调度工具之Quartz(1)
Java学习笔记:定时任务调度工具之Quartz
146 0
|
XML Java 调度
JAVA | Spring + quartz 实现定时任务
很久不见,因为忙着泡妞,断更了一个月,实在是罪过。废话不多说,最近在工作中遇到了使用 quartz 实现定时任务的需求。写出来分享给大家,权当笔记。
JAVA | Spring + quartz 实现定时任务
|
Java
java 定时任务 quartz 时间表达式Cron总结
java 定时任务 quartz 时间表达式Cron总结
429 0
|
Java
java Quartz 定时任务管理类
java Quartz 定时任务管理类
212 0
|
存储 设计模式 Java
Java学习笔记:定时任务调度工具之Quartz
Java学习笔记:定时任务调度工具之Quartz
181 0