当作业重新启动时,只有失败的分区会再次运行。如何再次运行已成功完成的作业?
重新提交作业和重启作业有区别吗?
我在 Websphere Liberty 上使用 IBM 的 JSR 352 实现。
最佳答案
Java Batch 的设计使得当您重新启动一个作业实例时,执行会从您中断的地方继续(在之前失败或停止的执行中)。
所以通常这意味着两件事:
- 在作业中,您从先前失败的步骤(或作业停止的步骤)开始。
- 在该步骤中,您首先使用批处理容器保存的检查点值定位输入光标。
因此,如果在初始执行时您完成了第 1 步,然后在第 2 步 记录 #4123 处失败,并且每 100 条记录检查一次,那么在重新启动时您通常会从记录#4100 处的step2 开始执行。
在某些情况下,有必要在重新启动时执行 step1,然后再执行之前失败的 step2,并且有一个选项可以实现此行为
经常按计划重复提交/开始一项工作是很典型的。
在批处理规范方面,每次启 Action 业时都会创建一个新的JobInstance。此时,此 JobInstance 的初始 JobExecution 已创建。如果执行未完成,实例可能会重新启动,此时会为此 JobInstance 创建第二个 JobExecution。
因此,重新启动使用检查点和前一个JobExecution 的执行历史记录,而重新启动则从零开始。
关于java - JSR 352 重新开始工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36779383/