是否为JEE批处理中的每个分区保存了检查点?

问题描述 投票:0回答:1

如果我有一个简单的JEE批处理作业,可以使用可以并行处理数据的步骤。

我想从不同的源读取数据,因为它们是独立的 - 它可以在多个线程中同时完成。

步:

<step id="step1">
  <chunk checkpoint-policy="item" item-count="15">
    <reader ref="MyReader">
      <properties>
        <!-- some properties -->
      </properties>
    </reader>
    <processor ref="MyProcessor"></processor>
    <writer ref="MyWriter"></writer>
  </chunk>
  <partition>
    <mapper ref="MyPartitionMapper"/>
  </partition>
</step>

让我们说,我的reader,正在使用checkpoint,因为如果出现错误,我想重新启动分区并仅处理尚未读取和处理的数据。

问题:如果我有这样的场景(多个数据源,并行读取),是否可以重新启动作业或分区,以防出现为此特定分区保存检查点的错误?

换句话说,即使我必须重新启动作业,我是否会为每个分区保存单独的检查点,因此对于每个数据源,我只读取新数据(尚未处理)?

java-ee batch-processing
1个回答
1
投票

我只是想知道这个问题的答案,所以我挖到了JSR 352 standard。报价:

由于每个线程都运行该步骤的单独副本,因此对于块类型步骤,在每个线程上独立地进行分块和检查点。

JBeret's PartitionExecutionImpl类根据索引显示为每个分区存储的数据。只要索引在运行期间保持一致,检查点就应该是每个分区。

© www.soinside.com 2019 - 2024. All rights reserved.