Quartz简介
Quartz是一个开源的作业调度框架,可以让计划的程序任务一个预定义的日期和时间运行。Quartz可以用来创建简单或复杂的日程安排执行几十,几百,甚至是十万的作业数。
Quartz是什么?
作业调度库
Quartz 是一种功能丰富的,开放源码的作业调度库,可以在几乎任何Java应用程序集成 - 从最小的独立的应用程序到规模最大电子商务系统。Quartz可以用来创建简单或复杂的日程安排执行几十,几百,甚至是十万的作业数 - 作业被定义为标准的Java组件,可以执行几乎任何东西,可以编程让它们执行。 Quartz调度包括许多企业级功能,如JTA事务和集群支持。
Quartz可以用来做什么
如果应用程序需要在给定时间执行任务,或者如果系统有连续维护作业,那么Quartz是理想的解决方案。使用Quartz作业调度应用的示例:
- 驱动处理工作流程:作为一个新的订单被初始化放置,调度作业到在正好两个小时内,它将检查订单的状态,如果订单确认消息尚未收到命令触发警告通知,以及改变订单的状态为“等待的干预”。
- 系统维护:调度工作给数据库的内容,每个工作日(节假日除外平日)在11:30 PM转储到一个XML文件中。
- 在应用程序内提供提醒服务。
Quartz第一个程序
依赖quartz程序每五秒在控制台打出Hello World,该程序使用的quartz的版本是2.2.1
package com.conjane.demo;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
public class DatetimeHelper {
static String format(Date date,String pattern){
DateFormat dateFormat = new SimpleDateFormat(pattern);
String dateTime = dateFormat.format(date);
return dateTime;
}
}
package com.conjane.demo;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import java.util.Date;
public class HelloWorldJob implements Job{
public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
System.out.println("当前时间是--" + DatetimeHelper.format(new Date(),"yyyy-MM-dd hh:mm:ss"));
System.out.println("Hello World");
}
}
package com.conjane.demo;
import org.quartz.*;
import org.quartz.impl.StdSchedulerFactory;
public class HelloWorldScheduler {
public static void main(String[] args) throws SchedulerException {
JobDetail jobDetail = JobBuilder.newJob(HelloWorldJob.class)
.withIdentity("HelloWorldJob", "HelloWorldGroup")
.build();
Trigger trigger = TriggerBuilder.newTrigger()
.withIdentity("HelloWorldTrigger", "HelloWorldGroup")
.startNow()
.withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(5).repeatForever())
.build();
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
scheduler.start();
scheduler.scheduleJob(jobDetail,trigger);
}
}
程序输出
当前时间是--2017-12-01 10:21:49
Hello World
当前时间是--2017-12-01 10:21:54
Hello World
当前时间是--2017-12-01 10:21:59
Hello World
当前时间是--2017-12-01 10:22:04
Hello World
当前时间是--2017-12-01 10:22:09
Hello World
当前时间是--2017-12-01 10:22:14
Hello World