1

重新启动作业时,只会再次运行失败的分区。如何再次运行成功完成的作业?

再次提交作业和重新开始作业有区别吗?

我在 Websphere Liberty 上使用 IBM 的 JSR 352 实现。

4

1 回答 1

3

Java Batch 的设计目的是,当您重新启动作业实例时,执行会从您停止的地方继续执行(在先前失败或停止的执行中)。

所以通常这意味着两件事:

  1. 在作业中,您从先前失败的步骤(或作业停止的步骤)开始。
  2. 在该步骤中,您首先使用批处理容器保存的检查点值定位输入光标。

因此,如果在初始执行时您完成了第1步,然后在第 2 步的记录 # 4123处失败,并且每 100 条记录检查一次,那么在重新启动时,您通常会在第 2 步的第 4100 号记录处开始执行

在某些情况下,在执行之前作业失败的step2之前,还需要在重新启动时执行step1,并且还有一个选项可以获取此行为。

通常是按计划重复提交/启动作业。

在批处理规范方面,每次启动作业时都会创建一个新的JobInstance 。此时创建此JobInstance的初始JobExecution。如果执行没有运行完成,则可以重新启动实例,此时为此JobInstance创建第二个JobExecution

因此,重新启动使用前一个JobExecution的检查点和执行历史记录,而从一个干净的状态开始。

于 2016-04-21T22:01:59.787 回答