2015-03-31 22 views
5

Chcę przyłączyć 3 zadania, ale funkcja AddJobChainLink() pobiera tylko 2 parametry jobkeys jako parametr.Jak połączyć więcej niż 2 zadania za pomocą JobChainingJobListener Quartz.net?

scheduler = container.GetInstance<IScheduler>(); 
      scheduler.JobFactory = container.GetInstance<IJobFactory>(); JobKey jobkey1 = new JobKey("job1", "group1"); 
      JobKey jobkey2 = new JobKey("job2", "group2"); 
      JobKey jobkey3 = new JobKey("job3", "group3"); 

      var job1 = JobBuilder.Create<Type1>().WithIdentity("job1", "group1").Build(); 
      var job2 = JobBuilder.Create<Type2>().WithIdentity("job2", "group2").Build(); 
      var job3 = JobBuilder.Create<Type3>().WithIdentity("job3", "group3").Build(); 

      ITrigger trigger1 = TriggerBuilder.Create().WithIdentity("trigger1", "group1").StartNow().Build(); 

      JobChainingJobListener chain = new JobChainingJobListener("testChain"); 
      chain.AddJobChainLink(jobkey1, jobkey2); 
      scheduler.ScheduleJob(job1, trigger1); 
      scheduler.AddJob(job2, true); 
      scheduler.AddJob(job3, true); 

      scheduler.ListenerManager.AddJobListener(chain, GroupMatcher<JobKey>.AnyGroup()); 

      scheduler.Start(); 
+0

Czy próbowałeś połączyć 'jobkey1'' -' 'jobkey2' i' jobkey2' -> 'jobkey3'? –

Odpowiedz

6

Spróbuj tego:

JobChainingJobListener chain = new JobChainingJobListener("testChain"); 
chain.AddJobChainLink(jobkey1, jobkey2); 
chain.AddJobChainLink(jobkey2, jobkey3); 

JobChainingJobListener pomaga stworzyć łańcuch wykonania dla swoich miejsc pracy w określonej kolejności pragnienie. Wystarczy połączyć każde zlecenie z innym w określonej kolejności.

+0

Myślę, że to dwukrotnie uruchomi zadanie nr 2. co myślisz? – Beginner

+0

@Beginner nie, nie będzie. –

+1

Wygląda na to, że zadania podrzędne muszą być ustawione jako trwałe, w przeciwnym razie po pierwszym wyzwalaczu nie będą nigdy ponownie uruchamiane. –

Powiązane problemy