2013-10-11 81 views
5

たとえば、私は毎日午前12時に "Hello World"を印刷するJavaプログラムを作成したいのですが、これを達成するためにQuartzスケジューラを使用するにはどうしたらいいですか?特定の時刻に実行するjava quartzスケジューラ

Trigger trigger = TriggerUtils.makeDailyTrigger(0, 0); 
trigger.setName("trigger1"); 
trigger.setGroup("group1"); 

このようにしますか?どこにプリント "hello world"メソッドを置くべきですか?

答えて

6

あなたは、ジョブの実行をスケジュールするための式を使用することができます。そして、あなたはステップの詳細によってステップのために、このリンクを参照してください。この

scheduler.scheduleJob(job, trigger); 

のようにジョブをスケジュールすることができます。例:

public static class HelloJob implements Job { 
    @Override 
    public void execute(JobExecutionContext ctx) throws JobExecutionException { 
     System.out.println("Hello World"); 
    } 
} 

public static void main(String[] args) throws SchedulerException { 
    String exp = "0 0 0 1/1 * ? *"; 

    SchedulerFactory factory = new StdSchedulerFactory(); 
    Scheduler scheduler = factory.getScheduler(); 
    scheduler.start(); 
    JobDetail job = JobBuilder.newJob(HelloJob.class).build(); 
    Trigger trigger = TriggerBuilder.newTrigger() 
            .startNow() 
            .withSchedule(
             CronScheduleBuilder.cronSchedule(exp)) 
            .build(); 
    scheduler.scheduleJob(job, trigger); 
} 

別の表現を作成する場合は、http://www.cronmaker.com/を参照してください。例えば出力を見るために毎分0 0/1 * 1/1 * ? *のために。 Cron Expressionsも参照してください。

+2

がさらに簡単にスケジュールのためのクラスを作成し、使用することができます[CronScheduleBuilder#タスクをスケジュールしたいからクラス(ジョブ)を作成します。 dailyAtHourAndMinute(int、int)](http://quartz-scheduler.org/api/2.0.0/org/quartz/CronScheduleBuilder.html#dailyAtHourAndMinute%28int,%20int%29)メソッドです。単に 'CronScheduleBuilder.cronSchedule(exp)'を 'CronScheduleBuilder.dailyAtHourAndMinute(0、0)'で置き換えてください。確かに、それは時と分を同等のcron式に変換します。 – ssssteffff

+0

あなたは正しいです。設定は簡単ですが、簡単です。 –

+0

どのように私のメソッドを追加しますか?クラスではない – marlonpya

0

Jobインターフェイスを実装し、executeメソッドの実装を提供することでカスタムジョブを作成する必要があります。メソッドを実行すると、「hello world」を印刷できます。 Quartz tutorial

0

これに対してcron式を作成できます。あなたは、次のオブジェクト

  1. 仕事を持っている必要があり、水晶の仕事を持っている
  2. が最後にトリガーを作成し、トリガー

トリガのに仕事を関連付けるジョブに関連付けられます

  • タスク2つのタイプ

    ジョブを制御できるシンプルなトリガーは、毎分または10分ごとに実行できます。追加のパラメータを設定することもできます

    場合によっては、午前12時に毎日実行したいので、cronトリガを使用できます。リンク

    http://www.mkyong.com/spring/spring-quartz-scheduler-example/

    以下と石英のcron表現については、この時の詳細とサンプルプログラムの外観のために

    http://quartz-scheduler.org/documentation/quartz-1.x/tutorials/crontrigger

  • 1
    1. ダウンロード石英ジャーが中に入れ石英のマニュアルを参照してくださいlibフォルダ構築プロジェクト
    2. はあなたが

      import org.apache.log4j.Logger; 
      import org.quartz.Job; 
      import org.quartz.JobExecutionContext; 
      import org.quartz.JobExecutionException; 
      
      public class MyJob implements Job { 
          private Logger log = Logger.getLogger(MyJob.class); 
          @Override 
          public void execute(JobExecutionContext context) throws JobExecutionException { 
      
           log.debug("Hi...."); 
           System.out.println("Corn Executing....."); 
      
          } 
      } 
      
    3. のcron表現を提供するのではなく、あなたのタスク

      import org.quartz.JobBuilder; 
      import org.quartz.JobDetail; 
      import org.quartz.Scheduler; 
      import org.quartz.SchedulerException; 
      import org.quartz.SchedulerFactory; 
      import org.quartz.SimpleScheduleBuilder; 
      import org.quartz.Trigger; 
      import org.quartz.TriggerBuilder; 
      import org.quartz.impl.StdSchedulerFactory; 
      
      public class JobScheduler { 
      
          public static void main(String[] args) { 
           // TODO Auto-generated method stub 
           try { 
            JobDetail job = JobBuilder.newJob(MyJob.class).withIdentity("myjob").build(); 
      
            Trigger trigger = TriggerBuilder.newTrigger().withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(30).repeatForever()).build(); 
      
            SchedulerFactory schFactory = new StdSchedulerFactory(); 
            Scheduler scheduler = schFactory.getScheduler(); 
            scheduler.start(); 
            scheduler.scheduleJob(job, trigger); 
      
           }catch (SchedulerException e) { 
      
            e.printStackTrace(); 
           } 
          } 
      } 
      
    関連する問題