Spring 批处理并行处理两个任务,但第二个任务依赖于第一个任务

Spring batch- parallel processing of two tasks but second task has dependency on first task

我正在为 processing large data 使用 spring batch

我的问题是我有两个不同的 Tasklet,它们是 executing one after another。我不能 运行 它并行,因为第二个 tasklet 首先有一些依赖性 Tasklet。为了节省时间,我想在前几个 items 被上一个 tasklet processed 之后立即开始下一个 Tasklet。由于 Spring Batch 使用 Chunk Oriented 处理方式。一个 Tasklet 中的 ItemWriter 能否将已处理的项目块传递给另一个 TaskletItemReaderItemProcessorItemWriter 以进行下一次处理?但是当另一个 tasklet 正在处理 chunk 时,前一个 tasklet 应该 NOT 等待并且它应该继续 iteration 超过 next chunk.

根据您的描述和上面的其他信息,我将简单地利用 CompositeItemWriter 来完成此操作。

项目列表将首先由 WriterOne 写入,然后传递给 WriterTwo 并由其写入。

<bean id="compositeWriter" 
        class="org.springframework.batch.item.support.CompositeItemWriter">
    <property name="delegates">
        <list>
            <ref bean="writerOne" />
            <ref bean="writerTwo" />
        </list>
    </property>
</bean>

<bean id="writerOne"  ...  />
<bean id="writerTwo"  ...  />