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

标签 java multithreading spring-batch

我正在使用spring batch处理大数据

我的问题是我有两个不同的Tasklet,它们正在执行一个接一个。我无法并行运行它,因为第二个 tasklet 与第一个 Tasklet 有一些依赖关系。为了节省时间,我想在前几个 items 被前一个 tasklet 处理 后立即启动下一个 Tasklet/。由于 Spring Batch 使用 Chunk Oriented 处理风格。一个 TaskletItemWriter 可以将已处理的项目 block 传递给另一个 TaskletItemReader ItemProcessorItemWriter 用于下一步处理?但是,当另一个 tasklet 正在处理 block 时,之前的 tasklet 不应该等待,而应该继续 >对下一个 block 进行迭代

最佳答案

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

项目列表将首先由 WriterOne 写入,然后传递给 WriterTwo 并由 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"  ...  />

关于java - Spring批处理并行处理两个任务,但第二个任务依赖于第一个任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38613888/

相关文章:

c - 自旋锁锁定系统

java - 每当线程达到稳定状态时就发出信号终止它

python - 有没有办法请求从非主循环的线程在 Tkinter 主循环上调用函数?

Java ClassNotFoundException 与 Maven 依赖关系?

java - Java 中是否有 Ruby's Digest::MD5.base64digest 的等效项?

java - Spring Batch 生成的项目列表的 Bean ID

java - 错误: Encountered an error executing the step org. springframework.batch.item.ItemStreamException:无法初始化阅读器

java - Spring 批处理 : How to access the current step's id/name from within an ItemReader or ItemWriter

java - JTable 的非实时/非实时排序

Java:过度类型的结构?在 Object[] 中有很多类型?