我可以用一个itemreader和多个子步骤编写spring批处理步骤吗?每个子步骤后面都有一个itemsprocessor和一个itemwriter?
我正在努力实现这样的目标:
ItemReader ---> item ---> ItemProcessor#1 ---> ItemProcessor#2
| |
v v
ItemWriter#1 ItemWriter#2
附加说明
为了避免前后不一致,我不想读两遍。
第二个 ItemProcessor
将需要过滤掉一些项目,这应该由第一个写 ItemWriter
,但不是第二个。
我认为这个问题与springbatch不同:一个reader、多个处理器和writer,因为我需要按顺序而不是并行地处理项目。
1条答案
按热度按时间2izufjch1#
spring batch提供的面向块的处理模型基于两个关键概念:
ChunkProvider
:通过委托给ItemReader
ChunkProcessor
:通过委托给ItemProcessor
以及ItemWriter
默认情况下,spring批处理为每个接口提供两种实现:SimpleChunkProvider
/FaultTolerantChunkProvider
以及SimpleChunkProcessor
/FaultTolerantChunkProcessor
(springbatch为远程分区/分块提供了其他实现,但这超出了本文的范围)。默认情况下,每个组件都使用“简单”版本。如果默认行为不够或无法根据需要进行配置,则可以提供自定义组件。请看一下faq中的这个问题:spring批处理在使用灵活策略和默认实现方面的理念是什么?以下是摘录:为了回答您的问题,您可以提供
ChunkProcessor
根据需要调用管道中的多个处理器/写入程序。使用这种方法,您将只读取一次项目,因为您可以继续使用默认值ChunkProvider
.