QuartZ定时任务的基本使用

6次阅读

共计 1973 个字符,预计需要花费 5 分钟才能阅读完成。

一、Quartz 可以用来做什么

Quartz 是一个强大任务调度框架,我工作时候会在这些情况下使用到 quartz 框架,当然还有很多的应用场景,在这里只列举 2 个实际用到的

餐厅系统会在每周四晚上的 22 点自动审核并生成报表;人事系统会在每天早晨 8 点给有待办的人员自动发送 Email 提醒

二、使用 Quartz 之前的准备

1. 建立一个 Maven 项目;2. 引入 quartz 的依赖;


使用 quartz,我们仅仅需要在 maven 的 pom 文件中添加依赖即可。我使用的是现在最新的一个版本 2.3.0,大家可以在 maven 的仓库获取到最新的版本依赖,地址:http://mvnrepository.com/arti…;

但然也可以使用这个 2.3.0 的依赖,下面的例子都是使用此依赖并实现了效果。

[Java] 纯文本查看 复制代码
?
1
2
3
4
5
6

<!-- https://mvnrepository.com/artifact/org.quartz-scheduler/quartz -->

<dependency>

<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.3.0</version>

</dependency>

三、编写第一个 Quartz 任务案例 – 每隔 2 秒钟打印一次 HelloQuartz

 先实现一下这个基本的 Quartz 的任务再来介绍一下 Quartz 的 3 个重要组成,JobDetail,Trigger,Scheduler

1. 创建一个类 HelloJob.java,这个类是编写我们的具体要实现任务(打印 Hello Quartz)

[Java] 纯文本查看 复制代码
?
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;

import java.text.SimpleDateFormat;
import java.util.Date;
public class HelloJob implements Job{
public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {

    // 打印当前的执行时间 例如 2017-11-23 00:00:00
    Date date = new Date();
    SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    System.out.println("现在的时间是:"+ sf.format(date));
    // 具体的业务逻辑
    System.out.println("Hello Quartz");
}

}

2. 创建一个类 HelloScheduler.java,这个是具体触发我们的任务 

[Java] 纯文本查看 复制代码
?
01
02
03
04
05
06
07
08
09
10
11
12
13
14
public class HelloScheduler {

public static void main(String[] args) throws SchedulerException {
    // 创建一个 jobDetail 的实例,将该实例与 HelloJob Class 绑定
    JobDetail jobDetail = JobBuilder.newJob(HelloJob.class).withIdentity("myJob").build();
    // 创建一个 Trigger 触发器的实例,定义该 job 立即执行,并且每 2 秒执行一次,一直执行
    SimpleTrigger trigger = TriggerBuilder.newTrigger().withIdentity("myTrigger").startNow().withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(2).repeatForever()).build();
    // 创建 schedule 实例
    StdSchedulerFactory factory = new StdSchedulerFactory();
    Scheduler scheduler = factory.getScheduler();
    scheduler.start();
    scheduler.scheduleJob(jobDetail,trigger);

}

}

3. 执行 main 方法,Run 'HelloScheduler.main()',任务执行成功!————本文转自 CSDN

正文完
 0