0

假设这些是我的工作运行:

job_id | job_status
-------------------
1        COMPLETED
2        COMPLETED
3        FAILED
4        COMPLETED
5        FAILED

现在在作业 6的运行时,我想找出最后一个成功完成的作业的start_time,即作业 4

我怎么才能得到它?

我尝试使用JobExplorerAPI,但它根据输入提供输出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_executionbatch_job_execution_context

4

0 回答 0