Quartz教程:简介及使用

Quartz是一个开源的任务调度服务,它可以独立使用,也可与其它的Java EE,Java SE应用整合使用。无论是执行十个,一百个工作的简单任务,还是执行成百上千个工作的复杂调度任务都可以使用Quartz来实现,此外,Quartz还提供了很多企业级应用的特色,如JTA事务支持及集群。

如果你的应用中有任务需要在特定的时间执行,亦或周期循环执行,则Quartz也许是你理想的选择。

Quartz的使用

作为一个Javaer,自然知道第一步是下载Quartz的jar包,Quartz API中一些关键的接口有:

  • Scheduler – 这是与调度器交互的主要API,通过它来调度任务的执行。
  • Job  – 你的任务需要实现的接口,执行调度任务时,Scheduler会执行此接口的execute方法;
  • JobDetail – 定义Jobs的实例,里面包含了Job的所有信息:名称、所属的组,Job的类等;
  •  Trigger – 任务的触发器,由它来定义计划,规定Job何时被触发执行。

因此,可以这么理解,在我们应用Quartz时,完成具体工作的组件(ExportJob)需要实现Job接口,并在execute方法中调用具体的业务逻辑代码。而对于Quartz来说,每个Job的实例由JobDetail来描述,里面包括Job的实现类(ExportJob.class)等属性,Trigger则与调度器关联,决定何时触发Job的执行。最后,由Scheduler来管理所有的Jobs与Trigger。

Scheduler的生命周期从它被创建开始,一直到调用其shutdown()方法结束。一旦创建以后,便可通过Scheduler接口执行添加、删除、显示Jobs和Triggers,此外,还可执行其它相关的调度操作,如暂停Trigger。但是,所有Triggers相关的操作都需要在执行start()方法以后才能进行。

一个简单的实例如:

1. 执行业务逻辑的Job

public class SimpleJob implements Job{

	public void execute(JobExecutionContext paramJobExecutionContext)
			throws JobExecutionException {
		System.out.println("在后台解析日志信息");
		System.out.println("开始!");
		//……
		System.out.println("结束!");
	}

}

2. 任务调度

public class QuartzSimpleExample {

	public static void main(String args[]) {

		try {
			// 创建Scheduler
			Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
			scheduler.start();

			// 创建Job的实例
			JobDetail jobIns = JobBuilder.newJob(SimpleJob.class).withIdentity("simpleJob",
					"group1").build();

			// 创建Trigger
			SimpleScheduleBuilder buider = SimpleScheduleBuilder
					.simpleSchedule().withIntervalInMinutes(1).repeatForever();

			Trigger trigger = TriggerBuilder.newTrigger().withIdentity(
					"simpleTrigger", "group1").startNow().withSchedule(
					buider).build();

			//调度执行
			scheduler.scheduleJob(jobIns, trigger);

			try {
				Thread.sleep(60000);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}

			scheduler.shutdown();

		} catch (SchedulerException e) {
			e.printStackTrace();
		}

	}
}

如果你也看了Quartz的参考文档,可能会发现有些不一样,文档上面是简化的,这里加了一些东西,才能正常运行,特别是文档上坑新人,通过静态import,直接就newJob****。

(来源于Quartz-2.1.x参考文档,本着学习的态度编写~~)

 

如果未说明,本Blog中文章皆为原创文章,请尊重他人劳动,转载请注明: 转载自jmatrix

本文链接地址: Quartz教程:简介及使用

(注:一般引用了,我都会添加引用,如果有侵权的请联系我)



This entry was posted in Java and tagged . Bookmark the permalink. Follow any comments here with the RSS feed for this post. Trackbacks are closed, but you can post a comment.