顾乔芝士网

持续更新的前后端开发技术栈

quartz任务调度器

quartz是什么?我来告诉你quartz是什么!quartz最主要的功用是quartz是一个任务调度框架。我们定义了一个任务,我们定义了一个触发器。我们再定义一个任务,我们再定义一个触发器。当外界条件达到触发器的阀值,就会触发触发器去执行一个任务。那么触发器去执行的是哪一个任务呢。这时候就轮到任务调度器出场了。任务调度器关联了触发器与任务。quartz就是这样一个框架。

quartz能够执行多个作业。quartz能够执行多个作业依赖于多线程。这里多个作业的集合称之为任务。quartz最基本的三个元素是任务Task、触发器Trigger、调度器Scheduler。任务就是要做的事情,触发器就是什么时候去做这件事情中的时间、什么时候,调度器就是协调关联绑定任务与触发器,什么时间什么时候去执行什么任务。

示例:

首先是添加依赖,代码如下:

<!--SpringBoot整合Quartz依赖-->

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-quartz</artifactId>

</dependency>

创建任务类,代码如下:

public class QuartzJob implements Job {

@Autowired

StockMapper stockMapper;

@Override

public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {

//触发任务,只要触发了任务就会输出系统时间

log.info("--------"+ LocalDateTime.now()+"---------");

stockMapper.updateStockCount("PC100",-1);

}



添加配置类,调度器创建触发任务和触发时间,代码如下:

//配置Spring容器需要添加@Configuration注解

@Configuration

public class QuartzConfig {

//配置的核心是JobDetail和Trigger对象

//JobDetail任务内容,Trigger触发实际

//利用Bean将两个对象添加到容器中

@Bean

public JobDetail showTime() {

System.out.println("!!!!!!!!!!!!!!!!!!!!");

//利用JobBuilder类的newJob方法指定要运行的Job实现类的反射

return JobBuilder.newJob(QuartzJob.class)

//需要为当前任务起名字,方便Quartz调用

.withIdentity("dateTime")

//默认情况下JobDetail对象生成后,如果没有触发器绑定会被立即移除

//storeDurably方法,,当前对象生成后不会被移除

.storeDurably()

.build();

}

//Trigger触发器,指定触发时机

@Bean

public Trigger showTimeTrigger() {

System.out.println("+++++++++++++++++");

//声明cron表达式,定义触发时间

CronScheduleBuilder cron =

CronScheduleBuilder.cronSchedule("0/5 * * * * ?");

return TriggerBuilder.newTrigger()

//设置要绑定的jobDetail对象

.forJob(showTime())

//给当前触发器对象起名字

.withIdentity("dateTrigger")

//设置绑定cron表达式

.withSchedule(cron)

.build();

}

欢迎点赞,分享、标记在看、打赏、点击图文上方公众号名称进行关注。转载请注明出处。

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言