侧边栏壁纸
  • 累计撰写 25 篇文章
  • 累计创建 27 个标签
  • 累计收到 43 条评论

目 录CONTENT

文章目录

Quartz简单使用以及常用API解释

junior
2022-06-22 / 0 评论 / 3 点赞 / 945 阅读 / 2,077 字

简单使用Quartz

通过SchedulerFactory实例化scheduler,一旦scheduler被实例化,它就可以被启动,处于待机模式,然后关闭。注意,一旦scheduler被关闭,它就不能再次启动。Trigger不会触发(job不会执行),直到scheduler启动,或者处于暂停态。
这里是一个代码片段,它实例化和启动了一个scheduler,并调度了一个job:

  SchedulerFactory schedFact = new org.quartz.impl.StdSchedulerFactory();
  Scheduler sched = schedFact.getScheduler();
  sched.start();
 
  // define the job and tie it to our HelloJob class
  JobDetail job = newJob(HelloJob.class)
      .withIdentity("myJob", "group1")
      .build();
 
  // Trigger the job to run now, and then every 40 seconds
  Trigger trigger = newTrigger()
      .withIdentity("myTrigger", "group1")
      .startNow()
      .withSchedule(simpleSchedule()
          .withIntervalInSeconds(40)
          .repeatForever())
      .build();
  // Tell quartz to schedule the job using our trigger
  sched.scheduleJob(job, trigger);

Quartz几个常用的API

  • Scheduler :用于与调度程序交互的主程序接口。
  • Job:预先定义的希望在未来时间被调度程序执行的任务类,自定义。
  • JobDetall :使用JobDetail来定义定时任务的实例,JobDetail实例是通过JobBuilder类创建。
  • JobDataMap :可包含数据对象,在job实例执行的时候,可使用包含的数据;JobDataMap是java Map接口的实现,增加了一些存取基本类型方法。
  • Trgger触发器 :Trigger对象是用于触发执行Job的,当调度一个Job时,我们实例一个触发器然后调整它的属性来满足Job执行的条件,表明任务在什么时候执行。定义了一个已经被安排的任务将在什么时候执行的时间条件,比如每秒执行一次。
  • JobBuilder :用于声明一个任务实例,也可以定义关于该任务的详情比如:任务名,组名等,这个声明的实例将作为一个实例执行的任务。
  • TriggerBuilder :触发器创建器,用于创建触发器trigger实例。
  • JobListener,TriggerListener,SchedulerListener监听器,用于对组件的监听。

核心API :Scheduler,Job,Trgger简单认识

  1. Scheduler调度器
    Scheduler的生命周期起始于SchedulerFactory对它的创建,终止于调用shutdown方法对它关闭。一旦创建,就可以用Scheduler接口添加、移除、查询Job和Trigger,也可以执行与调度有关的操作(例如暂停trigger)。然而,如果没有调用start方法,Scheduler不会执行任何trigger(执行job)。
  2. Job任务
    一个Job就是一个实现了Job接口的类,它只有一个简单的方法:
package org.quartz;
public interface Job {
    public void execute(JobExecutionContext context)
      //自定义Job内容
      throws JobExecutionException;
  }

我们可以定义多个这样的实现类用来实现不同的任务,然后通过触发器来触发,一个Job可以指定多个触发器。
3. Trgger触发器
Trgger触发器用来按指定时间或者定时来执行一个Job,最常用的类型是SimpleTrigger和CronTrigger。如果你只需要执行一次,或者在给定的时间点启动job,并以时间间隔T,重复执行N次,那么SimpleTrigger是很方便的。如果你想要按照类似于日历的计划触发:例如每天中午、每月10号10:15,那么CronTrigger就很有用了。
4. Job和Trgger 的标识
Job和Trigger要给定标识符,因为它们要注册到Quartz scheduler中。Job和Trigger (JobKey和TriggerKey)的key允许它们放置到“组”中,分组对于job和trigger的归类是很有用的,例如“报告作业”和“维护作业”。Job和trigger的key的名字部分必须在组内是唯一的:换句话说,job和trigger的完整的key(或标识符)是名字和组的组合。

下一篇:Quartz Job和JobDetail详解

3

评论区