【发布时间】:2021-02-12 23:03:03
【问题描述】:
我正在使用 Spring Batch Integration 将文件从存储桶复制到本地目录并启动读取这些文件的作业。
我按照这个教程Transforming File Into a JobLaunchRequest
如果在处理过程中发生异常也没关系,作业被标记为 FAILED,当我再次启动项目时,作业重新启动。
但是我尝试了一个危急的情况,当服务器在读取过程中宕机。
当我重新开始时,我收到了以下异常:
Caused by: org.springframework.batch.core.repository.JobExecutionAlreadyRunningException: A job execution for this job is already running: JobExecution: id=1, version=1, startTime=2021-02-12 19:47:47.0, endTime=null, lastUpdated=2021-02-12 19:47:47.0, status=STARTED, exitStatus=exitCode=UNKNOWN;exitDescription=, job=[JobInstance: id=1, version=0, Job=[receivablePositionJob]], jobParameters=[{input.file.name
我验证了重新启动作业背后的逻辑,问题是该步骤被标记为 STARTED 而没有 END_TIME。我当然知道这是正确的行为。
有什么方法可以解决这个问题,我强制执行该作业吗?
【问题讨论】:
-
您的问题与 Spring 集成无关:工作状态及其管理显然是 Spring Batch 问题。为问题选择标签时请小心
-
@ArtemBilan 或多或少...正如我所说,这是 Spring Batch 的正常行为,我问的是是否有办法在集成启动工作之前,我可以处理,发现是否工作已经存在,他们的状态和决定我想做什么......
标签: spring-batch