应用程序启动后如何继续中断的批处理作业

时间:2017-07-20 02:21:33

标签: spring-boot spring-batch

我的批处理任务是由最终用户触发的,因此我不希望在应用程序启动时执行所有批处理作业(使用spring.batch.job.enabled=false)。

但我希望有一个解决方案来处理以下情况,

当应用程序启动时,spring-batch可以继续因应用程序重启或异常中断而导致的中断批处理作业。

1 个答案:

答案 0 :(得分:1)

通过提交具有相同作业参数的相同作业,可以实现Spring Batch中失败/中断作业的恢复。

因此,您可以执行以下操作重新提交失败的作业(假设您使用DB存储作业元数据)

  • 通过加入BATCH_JOB_INSTANCE和BATCH_JOB_EXECUTION表,找出没有完成作业执行的所有作业实例
  • 找出上述每个未完成作业实例的最新BATCH_JOB_EXECUTIONS,并从BATCH_JOB_EXECUTION_PARAMS
  • 中查找相应的作业参数
  • 使用BATCH_JOB_INSTANCE中的作业名称和BATCH_JOB_EXECUTION_PARAMS
  • 中的作业参数重新提交作业