Quartz三要素:Job(任务)、Trigger(触发器)、Scheduler(调度器)
Quartz官网地址:
一、先创建一个quartz项目:XXX_quartz;项目为maven项目。
二、通过在官网得到对应的quartz编写所需架包:
org.quartz-scheduler quartz 2.2.1 org.quartz-scheduler quartz-jobs 2.2.1
加入项目中的pom.xml文件中,或通过到maven架包搜索网站:;检索所需的quartz架包。
三、创建Job(任务):
public class HelloJob implements Job { public void execute(JobExecutionContext context) throws JobExecutionException { // 打印当前的执行时间,格式为2017-01-01 00:00:00 Date date = new Date(); SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); System.out.println("Current Exec Time Is : " + sf.format(date)); System.out.println("Hello World"); }}
必须通过实现Job接口;从而在execute方法中编写具体任务执行业务逻辑;通过查看JobExecutionContext源码,可此类得到上下任务及触发器执行详细信息;
四、调度任务触发
// 创建一个JobDetail实例,将该实例与HelloJob Class绑定,若未划分组的话,则默认组的值为DEFAULT JobDetail jobDetail = JobBuilder.newJob(HelloJob.class) .withIdentity("myJob").build();//创建触发器;触发器分为:simpleTrigger与cronTrigger;使用其中一种实例方式就好//simpleTrigger创建 // 创建一个触发器,设置两秒后执行,并永远执行;还设置:小时、分钟等各种执行逻辑 SimpleTrigger simpleTrigger = TriggerBuilder.newTrigger().withIdentity("simpleTrigger","group1"). withSchedule(SimpleScheduleBuilder.simpleSchedule(). withIntervalInSeconds(2).repeatForever()).startNow().build();//cronTrigger创建//可设置固定的开始时间(strtAt)及结束时间(endAt),//cron时间格式:[秒] [分] [时] [日] [月] [周] [年](年一般可省略)//每秒钟执行一次,永不停止CronTrigger trigger = (CronTrigger) TriggerBuilder .newTrigger() .withIdentity("myTrigger", "group1") .withSchedule( CronScheduleBuilder.cronSchedule("* * * * * ?")) .build(); //创建schedule;并执行任务 SchedulerFactory sdFactory = new StdSchedulerFactory(); try { Scheduler scheduler = sdFactory.getScheduler(); scheduler.start(); System.out.println(" scheduler is time "+scheduler.scheduleJob(jobDetail,trigger)); scheduler.start(); } catch (SchedulerException e) { e.printStackTrace(); }