Я хочу запускать два задания один за другим. Да, я делал поиск в Интернете, но у них есть решения, которые включают добавление второй работы в качестве шага в первом. Но у меня разные требования. Я получаю уведомление после завершения первого запуска пакетных заданий, а второй запускается только после получения этого уведомления. Возможно ли запустить два задания один за другим в Spring boot. Пожалуйста, помогите!Запуск 2-го задания-партии после завершения 1-го задания Весенняя загрузка
0
A
ответ
0
Может быть самым простым решением является добавить JobExecutionListener
для обратного вызова после завершения FirstJob. И в AfterJob
callback запустите второй Job. Поскольку вы получаете execContext из FirstJob, вы можете применить стратегию запуска задания на основе Job.
public class KpJobListener implements JobExecutionListener {
private final static Logger LOG = LoggerFactory.getLogger(KpJobListener.class);
private Job job;
private JobLauncher jobLauncher;
public KpJobListener(final Job job, final JobLauncher jobLauncher) {
this.job = job;
this.jobLauncher = jobLauncher;
}
@Override
public void beforeJob(JobExecution jobExecution) {
LOG.info("Strarting job {}");
}
@Override
public void afterJob(JobExecution jobExecution) {
LOG.info("Job is completed job");
CompletableFuture.runAsync(()->{
try {
jobLauncher.run(job, new JobParametersBuilder().toJobParameters());
} catch (JobExecutionAlreadyRunningException | JobRestartException | JobInstanceAlreadyCompleteException
| JobParametersInvalidException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
});
}
}
Образец Спринг-batch.xml
<batch:job id="kpJob1" incrementer="jobIncrementer"
restartable="true">
<batch:listeners>
<batch:listener>
<bean class="com.kp.job.KpJobListener">
<constructor-arg name="job" ref="kpJob2" />
<constructor-arg name="jobLauncher" ref="jobLauncher" />
</bean>
</batch:listener>
</batch:listeners>
<batch:step id="kpJob1.step1" allow-start-if-complete="true">
<batch:tasklet>
<bean class="com.kp.job.step.task.KpTasklet" />
</batch:tasklet>
</batch:step>
</batch:job>
Вы можете улучшить этот подход для службы обмена сообщениями, который может быть аккуратным дизайном.
Есть ли [мой ответ] (http://stackoverflow.com/questions/41364220/how-to-run-spring-batch-jobs-in-certain-order-spring-boot/41437552#41437552) помощь? –