我试图找到如何确定JobExecution
从获取JobExplorer
是否实际运行的方法。问题是资源管理器通过运行 jdbc 查询来检查作业执行。但是在某些情况下(例如,带有 Spring Batch 作业的容器被杀死/重新启动)作业仍然以运行状态持续存在于数据库中,尽管它们是孤立的并且在运行时实际上没有运行任何处理。
和简单的方法,如
private boolean isJobRunning(String jobName) {
var activeExecutions = jobExplorer.findRunningJobExecutions(jobName);
return activeExecutions
.stream()
.anyMatch(jobExecution -> jobExecution.getStatus().isRunning());
}
没有按预期工作。
有没有办法找到真正活跃的工作?提前致谢