在同一spring批处理步骤中有多个ItemProcessor和ItemWriter

6l7fqoea  于 2021-07-13  发布在  Java
关注(0)|答案(1)|浏览(412)

我可以用一个itemreader和多个子步骤编写spring批处理步骤吗?每个子步骤后面都有一个itemsprocessor和一个itemwriter?
我正在努力实现这样的目标:

ItemReader ---> item ---> ItemProcessor#1 ---> ItemProcessor#2
                                 |                    |
                                 v                    v
                            ItemWriter#1         ItemWriter#2

附加说明
为了避免前后不一致,我不想读两遍。
第二个 ItemProcessor 将需要过滤掉一些项目,这应该由第一个写 ItemWriter ,但不是第二个。
我认为这个问题与springbatch不同:一个reader、多个处理器和writer,因为我需要按顺序而不是并行地处理项目。

2izufjch

2izufjch1#

spring batch提供的面向块的处理模型基于两个关键概念: ChunkProvider :通过委托给
ItemReader ChunkProcessor :通过委托给 ItemProcessor 以及 ItemWriter 默认情况下,spring批处理为每个接口提供两种实现: SimpleChunkProvider / FaultTolerantChunkProvider 以及 SimpleChunkProcessor / FaultTolerantChunkProcessor (springbatch为远程分区/分块提供了其他实现,但这超出了本文的范围)。默认情况下,每个组件都使用“简单”版本。如果默认行为不够或无法根据需要进行配置,则可以提供自定义组件。请看一下faq中的这个问题:spring批处理在使用灵活策略和默认实现方面的理念是什么?以下是摘录:

We expect clients to create their own more specific strategies that can be
plugged in to control things like commit intervals (CompletionPolicy),
rules about how to deal with exceptions (ExceptionHandler), and many others.

为了回答您的问题,您可以提供 ChunkProcessor 根据需要调用管道中的多个处理器/写入程序。使用这种方法,您将只读取一次项目,因为您可以继续使用默认值 ChunkProvider .

相关问题