JSR 352步骤分区 - 手动分区重启

时间:2016-04-21 11:39:53

标签: java batch-processing websphere-liberty jsr352

是否可以

  1. 监控每个分区的线程/线程
  2. 失败时手动/以编程方式重新启动它们。
  3. 根据我的阅读,我了解批处理框架为我们处理它。但是,如果我想自己做。我该怎么办?

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

1 个答案:

答案 0 :(得分:2)

批处理框架确实为您处理了部分内容。它记录每个分区的最终状态(例如 COMPLETED FAILED ),并且在重新启动作业时,它将仅重新启动 FAILED 的分区(默认情况下)。

但你只能直接在这份工作上运作。因此,一般情况下,您将通过等待所有其他分区完成(完成失败)重新启动具有失败分区的作业,然后重新启动作业,此时 FAILED 分区将重新执行。

因此,它旨在尽可能多地完成当前执行,而不是快速失败。

如果您真正想要的是在不等待所有分区完成并完成作业的情况下尽快重启每个分区,您可能需要查看 重试 批量生效。

E.g。要回滚并重试 SQLTransactionRollbackException ,您可以通过以下方式在XML中以声明方式执行此操作:

        <chunk retry-limit="3">
          <reader ref="...">
          ...
          <retryable-exception-classes>
            <include class="java.sql.SQLTransactionRollbackException"/>
          </retryable-exception-classes>
        </chunk>

这是否适合您的使用案例?如果没有,将有兴趣听到为什么不。