2014-09-15 8 views
0

Мне нужно выполнить планировщик сразу, когда я вызову планировщик, и в следующий раз, когда он выполнит базу в выражении cron. Но вот мой код, который выполняется только через 10 минут, но не выполняется, когда я запускаю этот класс/приложение.java Quartz2 cron trigger не запускается немедленно

QuartzConfigure.java для регистрации и вызова метода выполнения:

public class QuartzConfigure { 

    public static void main(String args[]) throws Exception { 
     // specify the job' s details.. 
     JobDetail job = JobBuilder.newJob(QuartzSchduleJob.class) 
            .withIdentity("testJob") 
            .build(); 

     //this is specify using chron expression using chrone expression 
     Trigger trigger = TriggerBuilder.newTrigger().withIdentity("Group2") 
      .withSchedule(CronScheduleBuilder.cronSchedule("0 /10 * * * ?")) 
      .startNow().build(); 

     //schedule the job 
     SchedulerFactory schFactory = new StdSchedulerFactory(); 
     Scheduler sch = schFactory.getScheduler(); 
     sch.start(); 
     sch.scheduleJob(job, trigger); 
    } 
} 

QuartzSchduleJob.java для работы:

public class QuartzSchduleJob implements Job { 

    @Override 
    public void execute(JobExecutionContext arg0) throws JobExecutionException {   
     System.out.println("calling jobSchedulling::"+System.currentTimeMillis());  
    }  
} 

ответ

1

С текущего кода, ваш 'планировщик' начинается немедленно после sch.start(), так что я предполагаю, что вы хотите знать, как заставить ваше задание запускаться при запуске вашего планировщика.

Если это так, вы не можете добиться этого только с помощью выражения cron, но у меня есть два решения для вас.

  1. Если вы хотите, чтобы ваши работы, чтобы быть триггером при запуске, а затем через каждые десять минут после того, рассмотреть вопрос об использовании SimpleScheduleBuilder. В коде замените CronExpressionSchedule:

    Trigger trigger = TriggerBuilder.newTrigger() 
             .withIdentity("trigger1", "Group2") 
             .withSchedule(ScheduleBuilder.simpleSchedule() 
              .withIntervalInMinutes(10) 
              .repeatForever()) 
             .startNow() 
             .build(); 
    
  2. Если вы хотите, чтобы работы для запуска при старте, а затем пожары на планирование на основе вашего выражения Крон. Рассмотрим использование второго триггера:

    [...] 
    Trigger trigger2 = TriggerBuilder.newTrigger() 
             .withIdentity("trigger2", "Group2") 
             .withSchedule(ScheduleBuilder.simpleSchedule()) 
             .startNow() 
             .build(); 
    [...] 
    sch.start(); 
    sch.scheduleJob(job, trigger); 
    sch.scheduleJob(job, trigger2);