2017-07-20 98 views
0

我的批处理任务是由最终用户触发的,所以我不想在应用程序启动时执行所有批处理作业(使用spring.batch.job.enabled=false)。如何在应用程序启动后继续中断的批处理作业

但我希望有应对这种情况之下的解决方案,

当应用程序启动弹簧一批可能继续造成的重新启动应用程序或或异常中断中断的批处理作业。

+0

请看看我现有的问题[这里](https://stackoverflow.com/questions/40990935/resume-a-spring-batch-job-from-last-processed-point)。我已经把有问题的代码重新启动你的工作。该代码的缺点是,所有不完整的步骤将从头开始,从正点开始,它们被停止。总而言之,程序员必须编写这些逻辑。 –

+0

@SabirKhan谢谢 –

回答

0

SpringBatch中失败/中断作业的恢复是通过提交具有相同作业参数的相同作业来实现的。

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

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

我相信有更简单的方法从JobOperator等检索类似的信息。你可以看看 –

+0

你是对的。 JobOperator可用于重新启动已停止的作业。问题是它是否从它停止的地方重新开始工作(基本上是恢复),还是将工作视为新提交的过程和从头开始的过程? – Kaps

+0

为什么不试试看? :)如果您使用相同的作业参数提交,它通常会从失败的位置开始。 –

相关问题