【问题标题】:How to re-use the same itemprocessor in multiple steps (each containing a different itemreader) in a Spring Batch job如何在 Spring Batch 作业中的多个步骤(每个步骤包含不同的 itemreader)中重用相同的 itemprocessor
【发布时间】:2019-04-01 15:28:16
【问题描述】:
我正在设置一个新的批处理作业来创建一个提取文件。我正在使用多个 sql 查询(每个都使用自己的自定义 itemreader)从数据库中获取各种结果。将这些结果处理和组合/写入单个文件以进行输出的最佳方法是什么?我需要为每个步骤创建一个新的处理器吗?或者有什么更有效的方法?
我看到的是 CompositeItemProcessor,但它似乎用于在一个步骤中将多个进程链接在一起,而不是在多个步骤中使用。
【问题讨论】:
标签:
xml
spring
spring-batch
batch-processing
【解决方案1】:
面向块的步骤只能有一个阅读器,因此如果您想从不同来源读取项目并将它们组合起来,则需要多个步骤。在您的情况下,我将分两个阶段进行:
- 阶段 1:从不同来源读取数据并将其写入临时存储(例如中间表)的几个步骤。这里可能不需要项目处理器。这些步骤可以并行运行
- 第 2 阶段:面向块的步骤从临时存储读取数据、处理数据(通过组合字段或执行任何业务逻辑)并将结果写入合并输出
希望这会有所帮助。