Я написал весеннее пакетное задание, которое я выполняю с помощью планировщика каждые 10 минут. Теперь эта работа в основном связана с передачей данных из одной базы данных в другую базу данных.
Проблема, с которой я сталкиваюсь, заключается в том, что иногда может быть огромный объем данных, который может потребовать выполнения задания более 10 минут. В таких случаях я хочу определить, выполняется ли какое-либо задание или нет? Если нет, то только я сделаю повторный запуск нового экземпляра задания. Если это задание уже запущено, я бы пропустил «вызов нового экземпляра задания». У меня есть код, который выглядит следующим образом.
Job job = (Job) context.getBean("job");
JobExplorer explorer = (JobExplorer) context.getBean("jobExplorer");
// Fetching all job instances.
List<JobInstance> jobInstances = explorer.findJobInstancesByJobName(
job.getName(), 0, explorer.getJobInstanceCount(job.getName()));
// Fetching the last job instance.
JobInstance lastJobInstance = jobInstances.get(0);
//Obtain all executions for last job instance.
List<JobExecution> executions = explorer.getJobExecutions(lastJobInstance);
// fetching last job execution
JobExecution lastJobExecution = executions.get(0);
System.out.println("Is my last Job running? \nAns:"+lastJobExecution.isRunning());
Несколько вещей, этот код предназначен для предварительной проверки всех запущенных заданий. я предполагаю, что если я запускаю сервер, то никакое другое задание не будет выполняться до запуска сервера, и если я запускаю задание после проверки предыдущего задания, работающего или нет, я предполагаю, что никакое другое задание не будет вызываться в моем коде планировщика.
Я хочу знать, это правильный способ сделать это? Я хочу убедиться, что вы запускаете только 1 экземпляр задания для одного и того же задания в одно и то же время, и это также после завершения любых предыдущих запусков для одного и того же задания.
P.S. Экземпляр задания и jObExplorer и jobLauncher внедряются внутрь планировщика. Это просто похожий код и, следовательно, получение bean-компонентов с использованием контекста.
Спасибо за чтение.