spring批处理:在作业运行时创建新步骤

unhi4e5o  于 2021-08-20  发布在  Java
关注(0)|答案(1)|浏览(285)

上下文:我正在研究spring批处理管道,它将数据上传到数据库。我已经学会了如何直读 .csv 文件,并使用 JdbcBatchItemWriter . 我正在处理的管道必须从包含多个 .csv 不同类型的文件。我想有档案下载和检查作为两个工作的第一步。我没有足够的磁盘空间来解压缩整个加载的归档文件。我没有解包,而是检查zip文件内容以定义 .csv zip文件系统中的文件路径及其类型。zip文件检查允许获取 InputStream 相应的 csv 容易归档。之后,阅读和上传(直接从zip)都被发现 .csv 文件将在作业的不同步骤中执行。
问题:有没有办法动态填充新的 Step 我们每个人都有 csv 作业运行时zip项作为 inspect
尝试过:我知道SpringBatch有条件流,但这种技术似乎只允许配置在作业执行之前定义好的静态步骤数。在我的例子中,步骤的数量( csv 文件)和读取器类型在作业的第二步中被发现。
此外,还有一个multiresourceitemreader,它允许按顺序读取多个资源。但我要读不同类型的书 csv 具有适当读取器的文件。此外,我希望具有“文件方式”步骤封装,这样,如果一个文件加载步骤失败,其他步骤仍将执行。
如何在spring批处理中创建动态步骤的类似问题对我来说没有合适的解决方案,因为答案假设在作业运行之前创建步骤,而我需要添加步骤作为作业第二步的结果。

rm5edbpk

rm5edbpk1#

您可以使用部分连接的步骤
在检查步骤中将包含csv列表的变量作为资源传递给jobexecutioncontext
在分区方法中,检索csv列表并为每个csv创建一个分区。
该步骤将针对创建的每个分区执行

相关问题