「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(); // ビルド
    }
}

 

Spring Boot

Posted by arkgame