假设这些是我的工作运行:
job_id | job_status
-------------------
1 COMPLETED
2 COMPLETED
3 FAILED
4 COMPLETED
5 FAILED
现在在作业 6的运行时,我想找出最后一个成功完成的作业的start_time,即作业 4
我怎么才能得到它?
我尝试使用JobExplorer
API,但它根据输入提供输出count
如果有一个 COMPLETED 作业后跟 10 个 FAILED 作业,这对我不起作用。那时我不会得到完成的工作。
List<JobInstance> jobInstances = jobExplorer.getJobInstances("myJob", 0, 10);
Optional<JobInstance> lastCompletedJobInstance =
jobInstances.stream()
.filter(jobInstance -> {
long instanceId = jobInstance.getInstanceId();
return BatchStatus.COMPLETED == jobExplorer.getJobExecution(instanceId).getStatus();
})
.findFirst();
我需要的原因是因为在我的 中ItemReader
,我想使用类似于以下的查询从我的数据库中获取增量记录:
SELECT * FROM items i WHERE i.created_at >= :lastSuccessfulJobRun
我不想手动查询批处理表batch_job_execution
等batch_job_execution_context