2017-08-03 5 views
1

Ich möchte mehrere Jobs nacheinander ausführen. Ich versuche es auf folgende Weise, aber irgendwie wird es nicht mit Cron Job ausgelöst.Jobverkettung mit Quarz in Java

Ich bin mir nicht sicher, ob es eine korrekte Implementierung Ansatz ist. Kann mir bitte jemand dabei helfen?

Dank ..

 Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler(); 
     JobChainingJobListener jobListener =new JobChainingJobListener("ChainListener"); 

     JobDetail job1 = JobBuilder.newJob(MyJob1.class) 
       .withIdentity(MyJob1.class.getName()). 
       withDescription(MyJob1.class.getName()) 
       .build(); 

     JobDetail job2 = JobBuilder.newJob(MyJob2.class) 
       .withIdentity(MyJob2.class.getName()). 
       withDescription(MyJob2.class.getName()) 
       .build(); 

     JobDetail job3 = JobBuilder.newJob(MyJob3.class) 
       .withIdentity(MyJob3.class.getName()). 
       withDescription(MyJob3.class.getName()) 
       .build();   

     Trigger jobTrigger = TriggerBuilder.newTrigger() 
       .withIdentity("MyTrigger") 
       .withSchedule(CronScheduleBuilder.cronSchedule(cronTrigger)).build(); 
     scheduler.scheduleJob(job1, jobTrigger);  
     scheduler.addJob(job2, true); 
     scheduler.addJob(job3, true);    

     jobListener.addJobChainLink(job1.getKey(), job2.getKey()); 
     jobListener.addJobChainLink(job2.getKey(), job3.getKey()); 
     scheduler.getListenerManager().addJobListener(jobListener); 
     scheduler.start(); 

Antwort

0

Nach Gruppennamen Jobs hinzufügen und Trigger Identität der Lage, es auszuführen. Hier ist der korrekte Code:

Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler(); 
    JobChainingJobListener jobListener =new JobChainingJobListener("ChainListener"); 

    JobDetail job1 = JobBuilder.newJob(MyJob1.class) 
      .withIdentity(MyJob1.class.getName(),"BatchJobGroup"). 
      withDescription(MyJob1.class.getName()) 
      .build(); 

    JobDetail job2 = JobBuilder.newJob(MyJob2.class) 
      .withIdentity(MyJob2.class.getName(),"BatchJobGroup"). 
      withDescription(MyJob2.class.getName()) 
      .build(); 

    JobDetail job3 = JobBuilder.newJob(MyJob3.class) 
      .withIdentity(MyJob3.class.getName(),"BatchJobGroup"). 
      withDescription(MyJob3.class.getName()) 
      .build();   

    Trigger jobTrigger = TriggerBuilder.newTrigger() 
      .withIdentity("MyTrigger","BatchJobGroup"). 
      .withSchedule(CronScheduleBuilder.cronSchedule("* * * * *")).build(); 

    scheduler.scheduleJob(job1, jobTrigger);  
    scheduler.addJob(job2, true); 
    scheduler.addJob(job3, true);    

    jobListener.addJobChainLink(job1.getKey(), job2.getKey()); 
    jobListener.addJobChainLink(job2.getKey(), job3.getKey()); 
    scheduler.getListenerManager().addJobListener(jobListener); 
    scheduler.start();