gpt4 book ai didi

java - Quartz Scheduler - 使用 JobDataMap 进行作业链

转载 作者:太空宇宙 更新时间:2023-11-04 14:01:01 25 4
gpt4 key购买 nike

我是 Quartz Scheduler 的新手,有以下要求

我需要有两份工作。基于第一个作业响应,需要立即触发第二个作业。

我阅读了不同的 jon 链接方法,在浏览完列表后,我最终选择了 JobDataMap 方法。

第一份工作:

public void method callJob()
JobDetail jobDetail = JobBuilder.newJob(DataProcurementJob.class)
.withIdentity("Job1, "JobGroup1")
.build();

JobDataMap jobDataMap = jobDetail.getJobDataMap();
jobDataMap.put("NEXT_JOB", "com.abc.test.Jobs.DataLoadJob");
jobDataMap.put("PARAM1", "VALUE1");
jobDataMap.put("PARAM2", "VALUE2");

Trigger trigger = TriggerBuilder.newTrigger()
.withIdentity("DataProcurementTrigger1", "DataProcurementTrigger")
.withSchedule(
CronScheduleBuilder.cronSchedule("0/5 * * * * ?"))
.build() ;

//Schedule it

Scheduler scheduler = new StdSchedulerFactory().getScheduler();
scheduler.scheduleJob(jobDetail,trigger);
scheduler.start();

}

Execute Method class :
public job1Class implements job {
If (condition == false){
keep running Job1
}
else
{
Call Job2
}
}

我已经实现了上面的代码,但是第二个工作还没有启动。我正在作业 2 中打印一份声明。

有人可以建议如何仅调用第二个作业一次吗?

最佳答案

您可以尝试使用 JobChainingJobListener,而不是使用 JobDataMap:

JobChainingJobListener chain = new JobChainingJobListener();
chain.addJobChainLink(job1.getKey(), job2.getKey());

您必须安排 job1 并将 job2 添加到调度程序:

scheduler.add(job2, false);
scheduler.scheduleJob(job1, trigger);
scheduler.start();

并且您的 job2 必须是持久的(参数 storeDurously)。

关于java - Quartz Scheduler - 使用 JobDataMap 进行作业链,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29309233/

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