SpringBatchでジョブを停止するにはどうすればよいですか?以下のコードを使用して、このメソッドを使用しようとしました。
public class jobListener implements JobExecutionListener{
@Override
public void beforeJob(JobExecution jobExecution) {
jobExecution.setExitStatus(ExitStatus.STOPPED);
}
@Override
public void afterJob(JobExecution jobExecution) {
// TODO Auto-generated method stub
}
}
COMPLETED、FAILEDも試しましたが、このメソッドは機能せず、ジョブは引き続き実行されます。解決策はありますか?
私はあなたが与えられた名前で仕事を止めたいと思っていると思います。これがコードです。
String jobName = jobExecution.getJobInstance().getJobName(); // in most cases
DataSource dataSource = ... //@Autowire it in your code
JobOperator jobOperator = ... //@Autowire it in your code
JobExplorerFactoryBean factory = new JobExplorerFactoryBean();
factory.setDataSource(dataSource);
factory.setJdbcOperations(new JdbcTemplate(dataSource));
JobExplorer jobExplorer = factory.getObject();
Set<JobExecution> jobExecutions = jobExplorer.findRunningJobExecutions(jobName);
jobExecutions.forEach(jobExecution -> jobOperator.stop(jobExecution.getId()));