タスクスケジューリングQuartz学習(一)SimpleTrigger

3151 ワード

概要:
実際の開発では、多くのタスクスケジューリングのニーズに直面します.
例えば、あるサイトは毎週午前9時にサイトのデータを更新し、同時にメールでユーザーに通知しなければならない.
例えば、あるフォーラムの需要:30分おきにエッセンス記事のRSSファイルを生成し、毎日未明にフォーラムユーザーのポイントランキングを統計し、30分おきにユーザーのロック解除任務を実行する.
このときquartzを用いて実現できる.
いくつかの重要なクラス:
●Job(コネクタ)
public interface Job {
    void execute(JobExecutionContext var1) throws JobExecutionException;
}

●JobDetail:真のタスク内容、タスク自体はJobインタフェースを統合しているが、真のタスクはJobBuilderが反射的にインスタンス化している.●Trigger:トリガ、タスクの開始時間を定義し、主に2種類のSimpleTrigger、CronTriggerに分けられる.CronTriggerは主にquartz式で定義されたタスクを処理するために使用されます.例えば、毎月20日、月曜日などです.●Scheduler:タスクスケジューラ、計画実行者、今私達はする内容(jobdetail)があって、する時間(trigger)があって、次に、この2つの内容を計画タスクSchedulerのオブジェクトの中で埋めて、時間になってそれは自動的に運行することができます
Example:
  
public class MyJob implements Job{

    @Override
    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
        System.out.println(" quartz"+new Date());
    }


    //SimpleTrigger
    public static void simpleTrigger(){

        // schedulerFactory scheduler 
        SchedulerFactory sf=new StdSchedulerFactory();
        Scheduler sche=null;

        // job, MyJob ; JobDetail 
        JobDetail jobDetail= JobBuilder.newJob(MyJob.class).withIdentity("test_job1","group1").build();

        // 
        Trigger trigger= TriggerBuilder.newTrigger().withIdentity("trigger_1","group1")
                .startNow()
                .withSchedule(SimpleScheduleBuilder.simpleSchedule()
                        .withIntervalInSeconds(5) // 
                        .withRepeatCount(5)) // 
                .build();

        try {
            // schedulerFactory scheduler 
            sche=sf.getScheduler();
            // jobDetail trigger scheduler
            sche.scheduleJob(jobDetail,trigger);
            sche.start();

        } catch (SchedulerException e) {
            e.printStackTrace();
        }
        finally{
            try {
                sche.shutdown(true);  // 
            } catch (SchedulerException e) {
                e.printStackTrace();
            }
        }
    }
}