RemindScheduler クラスを実装する
このステップでは、RemindJob をスケジュールして実行する RemindScheduler クラスをどのように実装するか学びます。
-
/home/labex/project/QuartzRemind/src/main/java/org/labex
ディレクトリにある RemindScheduler.java ファイルを開きます。
-
RemindJob 用の org.quartz.JobDetail インスタンスを作成して返す getJobDetail() メソッドを実装します。
public static JobDetail getJobDetail() {
return JobBuilder.newJob(RemindJob.class)
.withIdentity("reminderJob", "reminderGroup")
.build();
}
- RemindJob 用の org.quartz.Trigger インスタンスを作成して返す getTrigger() メソッドを実装します。トリガーは 2 秒ごとにジョブを繰り返し、3 回実行します。
public static Trigger getTrigger() {
return TriggerBuilder.newTrigger()
.withIdentity("reminderTrigger", "reminderGroup")
.startNow()
.withSchedule(SimpleScheduleBuilder.simpleSchedule()
.withIntervalInSeconds(2)
.withRepeatCount(2))
.build();
}
- org.quartz.Scheduler インスタンスを使って RemindJob をスケジュールして実行する doScheduler() メソッドを実装します。
public void doScheduler() throws SchedulerException, InterruptedException {
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
// スケジューラを起動する
scheduler.start();
System.out.println("Scheduling started");
// 定義された JobDetail と Trigger でジョブをスケジュールする
scheduler.scheduleJob(getJobDetail(), getTrigger());
// 10 秒間待つ
Thread.sleep(10000);
// スケジューラをシャットダウンする
scheduler.shutdown();
System.out.println("Scheduling completed");
}
このメソッドは、スケジューラを起動し、JobDetail と Trigger インスタンスでジョブをスケジュールし、10 秒間待ち、その後スケジューラをシャットダウンします。