quartz2.3.0(14)トリガートリガーの優先順位付け

ジョブタスクのカテゴリ:

パッケージorg.quartz.examples.example14; 

インポートorg.slf4j.Logger;
 インポートorg.slf4j.LoggerFactory;
 インポートorg.quartz.Job;
 インポートorg.quartz.JobExecutionContext;
 インポートorg.quartz.JobExecutionException; 

/ ** 
 *シンプルジョブタスク
 * / 
パブリック クラス TriggerEchoJob 実装ジョブ{ 

    プライベート 静的 最終ロガーLoggerFactory.getLogger LOG =(TriggerEchoJob。クラス); 

    //は、引数なしでpublicコンストラクタを修正しなければならない
    公共TriggerEchoJob(){ 
    } 

    // のタスク実行方法
    公衆 ボイド実行(JobExecutionContextコンテキスト)スローJobExecutionException { 
        LOG.info( "任务执行.TRIGGER:" + 。context.getTriggerを()のgetKey())。
    } 

}

 

スケジューラクラス:

パッケージorg.quartz.examples.example14。

輸入 静的org.quartz.DateBuilder.futureDate。
輸入 静的org.quartz.JobBuilder.newJob。
輸入 静的org.quartz.SimpleScheduleBuilder.simpleSchedule。
輸入 静的org.quartz.TriggerBuilder.newTrigger。

輸入org.quartz.DateBuilder.IntervalUnit。
輸入org.quartz.JobDetail。
輸入org.quartz.Scheduler。
輸入org.quartz.SchedulerFactory;
輸入org.quartz.Trigger。
輸入org.quartz.impl.StdSchedulerFactory;
輸入org.slf4j.Logger。
インポートorg.slf4j.LoggerFactory; 

インポートjava.util.Date; 

/ ** 
 *この例では、トリガは、優先度順にソートされる方法を示しています。
 * / 
パブリック・ クラスPriorityExample { 
    ロガーLOG = LoggerFactory.getLogger(PriorityExample。クラス); 

    公共の 無効 RUN()はスロー例外{ 

        // 初期化スケジューラ
 //         SchedulerFactory StdSchedulerFactory新しい新しいSF =(「ORG /クォーツ/例/ example14 / quartz_priorityを。プロパティ「); 
        SchedulerFactory SF = 新新StdSchedulerFactory(); 
        スケジューラSCHED = sf.getScheduler(); 

        JobDetail求人NewJob =(。TriggerEchoJob クラス).withIdentity(「TriggerEchoJob」;).build()

        // 一旦優先、多数の3つの優先トリガーも優先度が高く、最初にそれらをトリガーします。
        // 秒の時間間隔が同じではありませんので、それはディスプレイが優先を無視していなかった、実際には、優先度の高い順にトリガしていないようトリガされます、一回繰り返します。

        // トリガーの優先順位の提供を、私たちは次のトリガの実行順序が表示されるはずです
         。// 1. Priority10Trigger15SecondRepeat
         // 2. Priority5Trigger10SecondRepeat
         // 3. Priority1Trigger5SecondRepeat
         // 4. Priority1Trigger5SecondRepeat
         // 5. Priority5Trigger10SecondRepeat
         // 6。 。Priority10Trigger15SecondRepeat 

        // 計算今から5秒ASの開始時刻ですべてのトリガ
        FutureDateのstartTime = DATE(5。、IntervalUnit.SECOND); 

        // 第1トリガ優先順位1(withPriority)、優先順位、優先順位の低いトリガー低下 
        トリガーTRIGGER1 = newTrigger()withIdentity( "Priority1Trigger5SecondRepeatを。" ) .startAt(のstartTime) 
                (。simpleSchedule()withRepeatCount(.withSchedule。.. 1).withIntervalInSeconds(5))(1 withPriority ).forJob(ジョブ)
                .build(); 

        // 第2トリガ優先度が設定されていない場合、デフォルト優先セット優先フリップフロップの実装は、フリップフロップを最も低い優先順位となるよう 
        トリガトリガ2 = newTrigger()。withIdentity( "Priority5Trigger10SecondRepeat" ).startAt(のstartTime)
                .withSchedule(simpleSchedule()。withRepeatCount( 1).withIntervalInSeconds(10 。))forJob(仕事).build(); 

        //フリップフロップの優先度より高い優先度の数より大きなトリガ優先10(withPriority)、フロントの同時優先度の高いトリガの実行行う場合のフリップフロップ 
        のトリガをtrigger3 = newTrigger()。WithIdentity ( " Priority10Trigger15SecondRepeat " ).startAt(のstartTime)
                .withSchedule(simpleSchedule()withRepeatCount( .withIntervalInSeconds(15))withPriority(10 1) 
                .forJob(ジョブ).build(); 

        sched.scheduleJob(ジョブ、TRIGGER1); 
        SCHED .scheduleJob(トリガ2); 
        sched.scheduleJob(トリガー3); 
        
        // のみスケジューラ、トリガ、タスクが実際に実行されます開始するには、スケジューラを起動します
        (sched.startを); 
        log.info(「-------スケジューラ-----------------開始" ); 
        のThread.sleep( 30L * 1000L );
         //关闭调度器 
        sched.shutdown()。
        LOG.info( "-------シャットダウンコンプリート-----------------" ); 
    } 

    パブリック 静的 ボイドメイン(文字列[]引数)スロー例外{ 
        PriorityExample例えば = 新しいPriorityExampleを(); 
        example.run(); 
    } 
}

 

おすすめ

転載: www.cnblogs.com/zhuwenjoyce/p/11241279.html
おすすめ