Quartz 2スケジューラチュートリアル
Quartz、エンタープライズスケジューラジョブフレームワーク。Javaアプリケーションがジョブ/タスクをスケジューラして指定された日時に実行できるようにします。
このチュートリアルでは、最新のQuartzライブラリ2.1.5を使用してスケジューラジョブを開発する方法を示します。
Note
Quartz 2ではAPIが大幅に変更されています。これをolder Quartz 1.6.3 exampleでお読みください。
1. クォーツをダウンロード
Quartzライブラリはofficial websiteまたはMaven中央リポジトリから取得できます
ファイル:pom.xml
org.quartz-scheduler quartz 2.1.5
Note
JBoss、oracle、weblogicなどのアプリケーションサーバーにQuartzをデプロイするには、追加のQuartz依存関係が必要になる場合があります。このguideをお読みください。
2. クォーツジョブ
実行したいクォーツジョブが定義されていますか?
ファイル:HelloJob
package com.example.common; import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; public class HelloJob implements Job { public void execute(JobExecutionContext context) throws JobExecutionException { System.out.println("Hello Quartz!"); } }
3. クォーツトリガー
Quartzトリガーは、Quartzが上記のQuartzのジョブを実行するときに定義されますか?
古いQuartzと同様に、Quartz 2にはまだ2種類のトリガーがありますが、APIが変更されています。
-
SimpleTrigger-開始時間、終了時間、繰り返し間隔を設定できます。
-
CronTrigger – Unix cron式でジョブを実行する日付と時刻を指定できます。
SimpleTrigger – 5秒ごとに実行します。
Trigger trigger = TriggerBuilder .newTrigger() .withIdentity("dummyTriggerName", "group1") .withSchedule( SimpleScheduleBuilder.simpleSchedule() .withIntervalInSeconds(5).repeatForever()) .build();
CronTrigger – 5秒ごとに実行します。
Trigger trigger = TriggerBuilder .newTrigger() .withIdentity("dummyTriggerName", "group1") .withSchedule( CronScheduleBuilder.cronSchedule("0/5 * * * * ?")) .build();
Note
Quartz 2トリガーの例については、このofficial documentationをお読みください。
4. スケジューラー
スケジューラクラスは、「Job」と「Trigger」の両方をリンクして実行します。
Scheduler scheduler = new StdSchedulerFactory().getScheduler(); scheduler.start(); scheduler.scheduleJob(job, trigger);
5. 完全な例
SimpleTriggerおよびCronTriggerを使用したQuartz 2の完全な例。
SimpleTrigger example –非常に5秒実行します。
package com.example.quartz; import org.quartz.JobBuilder; import org.quartz.JobDetail; import org.quartz.Scheduler; import org.quartz.SimpleScheduleBuilder; import org.quartz.Trigger; import org.quartz.TriggerBuilder; import org.quartz.impl.StdSchedulerFactory; public class SimpleTriggerExample { public static void main(String[] args) throws Exception { // Quartz 1.6.3 // JobDetail job = new JobDetail(); // job.setName("dummyJobName"); // job.setJobClass(HelloJob.class); JobDetail job = JobBuilder.newJob(HelloJob.class) .withIdentity("dummyJobName", "group1").build(); //Quartz 1.6.3 // SimpleTrigger trigger = new SimpleTrigger(); // trigger.setStartTime(new Date(System.currentTimeMillis() + 1000)); // trigger.setRepeatCount(SimpleTrigger.REPEAT_INDEFINITELY); // trigger.setRepeatInterval(30000); // Trigger the job to run on the next round minute Trigger trigger = TriggerBuilder .newTrigger() .withIdentity("dummyTriggerName", "group1") .withSchedule( SimpleScheduleBuilder.simpleSchedule() .withIntervalInSeconds(5).repeatForever()) .build(); // schedule it Scheduler scheduler = new StdSchedulerFactory().getScheduler(); scheduler.start(); scheduler.scheduleJob(job, trigger); } }
CronTrigger example –同じように、5秒ごとにジョブを実行します。
package com.example.quartz; import org.quartz.CronScheduleBuilder; import org.quartz.JobBuilder; import org.quartz.JobDetail; import org.quartz.Scheduler; import org.quartz.Trigger; import org.quartz.TriggerBuilder; import org.quartz.impl.StdSchedulerFactory; public class CronTriggerExample { public static void main( String[] args ) throws Exception { //Quartz 1.6.3 //JobDetail job = new JobDetail(); //job.setName("dummyJobName"); //job.setJobClass(HelloJob.class); JobDetail job = JobBuilder.newJob(HelloJob.class) .withIdentity("dummyJobName", "group1").build(); //Quartz 1.6.3 //CronTrigger trigger = new CronTrigger(); //trigger.setName("dummyTriggerName"); //trigger.setCronExpression("0/5 * * * * ?"); Trigger trigger = TriggerBuilder .newTrigger() .withIdentity("dummyTriggerName", "group1") .withSchedule( CronScheduleBuilder.cronSchedule("0/5 * * * * ?")) .build(); //schedule it Scheduler scheduler = new StdSchedulerFactory().getScheduler(); scheduler.start(); scheduler.scheduleJob(job, trigger); } }
ソースコードをダウンロード
ダウンロード–Quartz2Example.zip(10kb)