gpt4 book ai didi

c# - 不使用 JobChainingJobListener 链接的作业

转载 作者:太空狗 更新时间:2023-10-30 00:19:09 25 4
gpt4 key购买 nike

我有我的 Quartz 调度程序的当前代码:

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();

(为澄清起见,作业目前只是打印到控制台。)

从Quartz网站上,我发现这会添加一个对所有工作感兴趣的JobListener:scheduler.ListenerManager.AddJobListener(chain, GroupMatcher<JobKey>.AnyGroup());我不确定这是否等同于全局监听器。

我还发现人们已经完成了一些代码scheduler.addGlobalJobListener(chain);在 java 。 c#中是否有等效的方法?

我的代码可以编译并且运行时似乎没有错误,但是 Job2 没有触发。 Job1 正确打印到控制台。

最佳答案

这里的问题是您第二次拼错了 key (“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。

关于c# - 不使用 JobChainingJobListener 链接的作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24515470/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com