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
能否将已处理的项目块传递给另一个 Tasklet
的 ItemReader
或 ItemProcessor
或 ItemWriter
以进行下一次处理?但是当另一个 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" ... />
我正在为 processing
large data
使用 spring batch
。
我的问题是我有两个不同的 Tasklet
,它们是 executing
one after another
。我不能 运行 它并行,因为第二个 tasklet 首先有一些依赖性 Tasklet
。为了节省时间,我想在前几个 items
被上一个 tasklet
processed
之后立即开始下一个 Tasklet
。由于 Spring Batch
使用 Chunk Oriented
处理方式。一个 Tasklet
中的 ItemWriter
能否将已处理的项目块传递给另一个 Tasklet
的 ItemReader
或 ItemProcessor
或 ItemWriter
以进行下一次处理?但是当另一个 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" ... />