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