Я новичок в Spring Batch. У меня есть требование запланировать несколько заданий, где одно задание зависит от завершения другого задания. В Spring Batch я обнаружил, что очень легко установить зависимость от шага. Есть ли способ сделать одну работу зависимой от другой работы?Spring Batch Зависимость от работы
1
A
ответ
0
Вы можете использовать JobExecutionListener.afterJob
и запустить другое задание, основанное на результатах первого. См. docs для более подробной информации.
Но может возникнуть больше смысла настраивать новое задание, охватывающее все эти шаги, и повторное использование существующих шагов в этом задании.
0
Spring Batch не обеспечивает способ зависимости между заданиями. Однако идеальным способом добиться этого является то, как вы вызываете задания. Это можно легко достичь с помощью планировщика Quartz.
Или можно сделать следующим образом.
ApplicationContext context = new ClassPathXmlApplicationContext(config);
JobLauncher jobLauncher = (JobLauncher) context.getBean("jobLauncher");
Job job1 = (Job) context.getBean("testJob");
Job job2 = (Job) context.getBean("testJob2");
JobExecution execution1 = jobLauncher.run(job1, new JobParameters());
System.out.println("Exit Status : " + execution1.getStatus());
if(execution1.getStatus()==0){
JobExecution execution2 = jobLauncher.run(job2, new JobParameters());
System.out.println("Exit Status : " + execution2.getStatus());
}
Почему вы не можете сделать это шаг? –
Брайан, у меня есть несколько шагов, которые нужно запускать один за другим в обеих заданиях. И тогда задания также должны запускаться один за другим. – Partha
Я не думаю, что можно связать работу. По крайней мере, не из того, что я могу найти в документации. Я бы предложил цепочки шагов. При необходимости вы можете повторно использовать шаги в разных заданиях. –