1、前言
研究了一段时间的quartz,有了一些成果,一直从最简单的quartz示例、与spring集成、集群环境部署、动态quartz实现,并在此将成果分享,帮助入手不久的新朋友。
2、首先初始化一个任务Job,也就是具体要做的业务(本次是在控制台打印出HelloWorld和当前时间)。
- package com.telek;
- import java.util.Date;
- import org.quartz.Job;
- import org.quartz.JobExecutionContext;
- import org.quartz.JobExecutionException;
- /**
- * Description:具体业务代码
- * HelloWorld.java Create on 2012-11-23 上午9:28:31
- * @author 张景
- * @version 1.0
- * Copyright (c) 2012 telek. All Rights Reserved.
- */
- public class HelloWorld implements Job {
- @Override
- public void execute(JobExecutionContext context)
- throws JobExecutionException {
- System.out.println("Hello World : " + new Date());
- }
- }
3、然后写一个测试类,其中包含了调度器scheduler的实例化、具体任务JobDetail的实例化、添加触发器、任务与触发器部署到调度器上、调度器启动。
- package com.telek;
- import java.text.ParseException;
- import org.quartz.CronTrigger;
- import org.quartz.JobDetail;
- import org.quartz.Scheduler;
- import org.quartz.SchedulerException;
- import org.quartz.impl.StdSchedulerFactory;
- /**
- * Description:利用调度器部署一个简单的HelloWorld作业
- * StartQuartz.java Create on 2012-11-23 上午9:29:16
- * @author 张景
- * @version 1.0
- * Copyright (c) 2012 telek. All Rights Reserved.
- */
- public class StartQuartz {
- public static void main(String[] args) throws ParseException {
- StartQuartz startQuartz = new StartQuartz();
- try {
- Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
- startQuartz.scheduleJob(scheduler);
- scheduler.start();
- } catch (SchedulerException e) {
- e.printStackTrace();
- }
- }
- /**
- * Description:用scheduler部署具体业务与触发器
- * Date:2012-11-23
- * @author 张景
- * @param @param scheduler
- * @param @throws SchedulerException
- * @param @throws ParseException
- * @return void
- */
- private void scheduleJob(Scheduler scheduler) throws SchedulerException,
- ParseException {
- // 实例化一个具体任务
- JobDetail jobDetail = new JobDetail("HelloWorld",Scheduler.DEFAULT_GROUP, HelloWorld.class);
- // 为这个任务添加触发器
- CronTrigger trigger = new CronTrigger("CronTriggerName","CronTriggerGroup", "0/6 * * * * ?");
- // 将具体任务和触发器部署到调度器scheduler上
- scheduler.scheduleJob(jobDetail, trigger);
- }
- }
4、本次将任务、触发器及其部署封装在一个schedulerJob方法中,运行本项目只需导入附件中的web项目,运行StartQuartz类即可。
5、运行结果为每分钟的6秒倍数在控制台输出:helloWorld和当前的时间。