Работаю на кварцевом планировщике. Я создал класс (com.test.job.MyClass), который реализует Job MyClass, содержит некоторые динамические значения, которые передаются в DataMap при планировании. на основе значения карты данных мне нужно вызвать остальные API, передав это значение карты данных.
Итак, в моей БД я определил задание, имеющее имя класса, имя задания, имя группы и значение операции. Я определил несколько записей в БД, имеющих
Как 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
Я пытаюсь запланировать эти 2 задания с одинаковым выражением Cron. но выполняется только задание TEST1. Тест2 нет. даже 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");
}
}