Job not related to using JobChainingJobListener

I have the current code for my Quartz scheduler:

var scheduler = StdSchedulerFactory.GetDefaultScheduler();

// Job1
var Job1 = JobBuilder.Create<Test1>().WithIdentity("job1", "group1").Build();
// Job2
var Job2 = JobBuilder.Create<Test2>().WithIdentity("job2", "group2").Build();

// Triggers
ITrigger trigger1 = TriggerBuilder.Create().WithIdentity("trigger1", "group1").StartNow().Build()
ITrigger trigger2 = TriggerBuilder.Create().WithIdentity("trigger2", "group2").StartNow().WithSimpleSchedule(x => x.WithIntervalInSeconds(1).WithRepeatCount(4)).Build();

// JobKeys
JobKey jobKey1 = new JobKey("Job1", "group1");
JobKey jobKey2 = new JobKey("Job2", "group2");

// Chain jobs
JobChainingJobListener chain = new JobChainingJobListener("testChain");
chain.AddJobChainLink(jobKey1, jobKey2);
scheduler.ScheduleJob(Job1, trigger1);
scheduler.AddJob(Job2, true);

// Global listener here. I am not sure what I have is correct.
scheduler.ListenerManager.AddJobListener(chain, GroupMatcher<JobKey>.AnyGroup());` 

scheduler.Start();

(To clarify the job, they do nothing but print on the console at the moment.)

On the Quartz website, I found that this would add a JobListener that is interested in all jobs: scheduler.ListenerManager.AddJobListener(chain, GroupMatcher<JobKey>.AnyGroup());I'm not sure if this is equivalent to a global listener.

I also found some code where people did scheduler.addGlobalJobListener(chain);in Java. Is there an equivalent method in C #?

My code compiles and seems to work without errors, but Job2 does not start. Job1 prints correctly on the console.

+4
source share
1 answer

, ( "Job1" "job1" ), - - . .

var scheduler = StdSchedulerFactory.GetDefaultScheduler();
JobKey jobKey1 = new JobKey("job1", "group1");
JobKey jobKey2 = new JobKey("job2", "group2");

var job1 = JobBuilder.Create<Test1>().WithIdentity(jobKey1).Build();
var job2 = JobBuilder.Create<Test2>().WithIdentity(jobKey2).StoreDurably(true).Build();

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

JobChainingJobListener chain = new JobChainingJobListener("testChain");
chain.AddJobChainLink(jobKey1, jobKey2);
scheduler.ListenerManager.AddJobListener(chain, GroupMatcher<JobKey>.AnyGroup());

scheduler.ScheduleJob(job1, trigger1);
scheduler.AddJob(job2, true);

scheduler.Start();

scheduler.addGlobalJobListener - API 2.x. ListenerManager, .

+7

Source: https://habr.com/ru/post/1546722/


All Articles