我正在研究石英调度程序。我创建了一个实现 Job MyClass 的类(com.test.job.MyClass),其中包含一些在调度时传入 DataMap 的动态值。基于数据映射值,我需要通过传递此数据映射值来调用其余 API。
所以在我的数据库中,我定义了具有 className、jobName、groupName 和 operationValue 的作业。我在 DB 中定义了多个条目
就像 JOB-1 是
jobClassName= com.test.job.MyClass
jobName=TEST1
groupName =group
operationValue =ADD
就像 JOB-2 一样
jobClassName= com.test.job.MyClass
jobName=TEST2
groupName =group
operationValue =ADD
我正在尝试安排这两个具有相同 Cron 表达式的作业。但只有 TEST1 作业正在执行。Test2 不是。甚至jobName都不一样
Scheduler scheduler = scheduleFactory.getScheduler();
try {
Class<? extends Job> jobClassName = (Class<? extends Job>) Class.forName(className);
JobDetail jobDetails = JobBuilder.newJob(jobClassName).withIdentity(jobName, groupName).build();
putIntoDataMap(job, jobDetails.getJobDataMap(), user);
CronTrigger trigger = newTrigger().withIdentity(jobName, groupName)
.withSchedule(cronSchedule(cronExpression).inTimeZone("Asia/Kolkata")).build();
scheduler.scheduleJob(jobDetails, trigger);
} catch (SchedulerException | ClassNotFoundException ex) {
throw new CredityRuntimeException(CredityErrorCodes.INVALID_TRIGGER.name(), ex);
}
在实现的类中,我可以看到 ADD 操作,所以这意味着只运行了 TEST1。我希望两者都应该运行。
public class MyClass implements Job {
@Override
public void execute(JobExecutionContext context) throws JobExecutionException
{
.....
String operationValue=jobDataMap.get("Operation");
}
}