Spring batch Spring批处理后移动文件

Spring batch Spring批处理后移动文件,spring-batch,batch-processing,Spring Batch,Batch Processing,我是新来的 我必须从一个文件夹中读取多个文件(分隔符),然后将它们加载到数据库中。我做到了 但我的问题是,在处理每个文件后,我必须将文件移动到processed文件夹或将错误记录移动到error文件夹 例如,如果我处理多个文件中的以下文件(abc.txt): D|hello1|123 D|hello2|three - Error D|hello3|123 我知道第二条记录是错误的 现在,我必须将错误记录写入错误文件(abc error.txt)中的错误文件夹,然后继续下一条记录。成功处理文

我是新来的

我必须从一个文件夹中读取多个文件(分隔符),然后将它们加载到数据库中。我做到了

但我的问题是,在处理每个文件后,我必须将文件移动到
processed
文件夹或将错误记录移动到
error
文件夹

例如,如果我处理多个文件中的以下文件(
abc.txt
):

D|hello1|123 
D|hello2|three - Error 
D|hello3|123
我知道第二条记录是错误的

现在,我必须将错误记录写入错误文件(
abc error.txt
)中的错误文件夹,然后继续下一条记录。成功处理文件后,排除错误记录,我需要将
abc.txt
移动到已处理文件夹中

我怎样才能达到上述要求

我的工作:

<batch:job id="file_to_db">
    <batch:step id="step1">
        <batch:tasklet ref="moveFiletoTmpFolder" />
        <batch:end on="FAILED"/>
        <batch:next on="*" to="step2" />
    </batch:step>
    <batch:step id="step2">
        <batch:tasklet transaction-manager="transactionManager"
            start-limit="100">
            <batch:chunk reader="multiResourceReader" writer="databaseItemWriter"
                commit-interval="100">
            </batch:chunk>
        </batch:tasklet>
    </batch:step>
</batch:job>
<bean id="multiResourceReader"
        class=" org.springframework.batch.item.file.MultiResourceItemReader">
    <property name="resources" value="file:batch/csv/processing/*.csv" />
    <property name="delegate" ref="cvsFileItemReader" />
</bean>

这项工作不是一步一个脚印。但每个文件在处理后都必须移动。
对于每个文件,必须将错误记录写入名为
filename Error.txt的单独文件。

侦听器。SpringBatch有一组侦听器,用于将这种类型的逻辑注入到您可能需要的步骤或作业的任何一点中。根据发现错误的位置,将指示哪个侦听器是合适的。例如,如果在读取过程中发现错误,则实现
itemreadstener\onReadError
方法是有意义的。通常,这种类型的逻辑通常通过实现正确的侦听器来处理,以在流程中的正确点执行所需的逻辑


您可以在这里的参考文档中阅读有关SpringBatch提供的一些侦听器的更多信息:

这是单步作业吗?如果可能的话,显示您的作业和步骤配置.Teja,您可以通过添加另一个步骤来实现,该步骤带有一个处理移动部件的tasklet。请参阅此处的“archiveFileTasklet”部分:@来宾,Tasklet用于执行一次操作。但对我来说,在从许多文件中读取每个文件后,我需要将文件移动到不同的文件夹中。