是否可以
根据我的阅读,我了解批处理框架为我们处理它。但是,如果我想自己做。我该怎么办?
我在Webshpere Liberty上使用IBM的JSR 352实现。
答案 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>
这是否适合您的使用案例?如果没有,将有兴趣听到为什么不。