「Spring Boot」Quartz Scheduler(ジョブ・トリガー)のサンプル
書式
1.スケジューラー作成 StdSchedulerFactory.getDefaultScheduler();
2.ジョブ作成 JobBuilder.newJob(xxx)
3.トリガー作成 TriggerBuilder.newTrigger()
使用例
package org.ws.quartz.arkgame;
import org.quartz.JobBuilder;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SimpleScheduleBuilder;
import org.quartz.Trigger;
import org.quartz.TriggerBuilder;
import org.quartz.impl.StdSchedulerFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class SimpleQuartzExample {
private static Logger logger = LoggerFactory.getLogger(SimpleQuartzExample.class);
public static void main(String[] args) throws SchedulerException, InterruptedException {
SimpleQuartzExample em = new SimpleQuartzExample();
logger.info("schedulerを初期化");
// ジョブ作成
JobDetail jobDetail = em.createJobDetail();
// トリガーを作成
Trigger trigger = em.createTrigger();
// スケジューラーを作成
Scheduler scheduler = em.createScheduler();
// スケジューラータスクを作成
scheduler.scheduleJob(jobDetail, trigger);
logger.info("execute scheduler");
// スケジューラーを開始
scheduler.start();
// スケジューラーを停止
Thread.sleep(20000);
scheduler.shutdown();
logger.info("schedulerをシャットダウン");
}
// スケジューラーを作成
protected Scheduler createScheduler() throws SchedulerException{
return StdSchedulerFactory.getDefaultScheduler();
}
// ジョブ作成
protected JobDetail createJobDetail(){
return JobBuilder.newJob(HelloWorldJob.class) // タスクを待つ
.withIdentity("HelloWorld_Job", "HelloWorld_Group") // 名前とグループの識別子
.usingJobData("count", 0) // 初期化
.build(); // ビルド
}
//トリガーを作成
protected Trigger createTrigger(){
return TriggerBuilder.newTrigger()
.withIdentity("HelloWorld_Trigger", "HelloWorld_Group") // 名前とグループの識別子
.withSchedule(
SimpleScheduleBuilder.simpleSchedule() // SimpleTriggerを作成
.withIntervalInSeconds(10) // 10秒間隔
.repeatForever() // ループ
).build(); // ビルド
}
}