folder : file1.xml file2.xml file3.xml
validate filename (file1.xml) -- read file1 -- process -- write
then
validate filename (file2.xml) -- read file2 -- write
validate filename (file3.xml) -- read file3 -- write
......
有三种方法可以使用。每一个都有它的优点和缺点。
使用步骤验证
您可以使用validateFileName
步骤设置作业,该步骤位于处理文件的步骤之前(例如processFiles
)。validateFilename
步骤将对所需的文件名进行任何验证,然后提供要处理的文件到下一步。它的通信方式可以很简单,比如将有效文件移动到新目录,也可以很复杂,比如使用作业的executioncontext
来存储要处理的文件的名称。
这样做的好处是,它将验证与处理分离。缺点是,如果你有一个额外的步骤,它会使工作稍微复杂一些。
使用在读取文件之前进行验证的ItemReader
。
最后一个选项是编写一个ItemReader
实现,该实现与MultiResourceItemReader
类似,但提供了一个钩子,用于在读取文件之前验证文件。如果文件没有验证,您将跳过它。
这个选项再次将验证与处理结合起来,但可能为这个特定的用例提供一个很好的可重用的抽象。
希望这有帮助!
我正在使用JpaPagingItemReaderBuilder查询一个DB,结果被插入到另一个DB中。 查询返回的结果没有任何问题,但我得到了一个错误与读取器的返回,在处理器中,您可以检查我的编码和错误下面。 有谁能给我一点启示吗?为什么我不能处理结果?
我正在尝试创建一个应用程序,该应用程序使用spring-batch-excel扩展名来读取用户通过web界面上传的Excel文件,以便解析Excel文件中的地址。 当代码运行时,没有错误,但我得到的只是我日志中的以下内容。即使我的处理器和Writer中都有log/syso(它们从未被调用过,我所能想象的是它没有正确读取文件,也没有返回要处理/写入的数据)。是的,这个文件有数据,实际上有几千条记录。
当我使用Spring批处理管理运行长时间运行的批处理作业的多个实例时,它会在达到jobLauncher线程池任务执行程序池大小后阻止其他作业运行。但是从cron中提取多个工作似乎效果不错。下面是作业启动器配置。 Spring批处理管理员Restful API是否使用不同于xml配置中指定的作业启动器?
我正在使用Spring batch处理一个带有页眉、详细信息和页脚记录的文件。页脚包含文件中的记录总数。如果dosent的详细记录计数与页脚中的计数匹配,则不应处理该文件。
我第一次使用Spring batch,我需要一些关于验证步骤的帮助。 在真正开始我的批处理作业之前,我需要对要处理的文件进行一些验证,例如: 使用数据库中的信息检查名称 使用来自系统和数据库的信息检查第一行和最后一行(特定) 用第一行中的数据检查总行号 在那之后,我真的可以开始我的批处理工作了。 我认为有多个步骤相互链接,第一步进行验证,如果文件无效,则进入错误步骤。 我如何进行验证?所有找到的阅
我需要从多个目录中读取文件,并处理数据并将其存储到DB中。目前我正在使用块多资源阅读器,它适用于1个目录。但现在我必须从多个目录中读取文件。如何使用Spring批处理来做到这一点