处理后的Spring Batch移动文件

时间:2017-01-18 05:40:49

标签: spring-batch batch-processing

我是Spring批次的新手。

我必须从文件夹中读取多个文件(分隔符)并将其加载到DB中。我做了什么。

但我的问题是在处理完每个文件后我必须将文件移动到string file = "E:\\CoachingClassImages\\HeaderInfoImages\\Logo" + logo_picname; string extention=Path.GetExtension(file); string tempFileName = string.Format("{0}({1}){2}", logo_picname,count++, extention); // will give you the file name as Img(3).jpg if count is 3 文件夹或错误记录到processed文件夹。

例如,如果我从多个文件处理下面的文件(Error):

abc.txt

我知道第2条记录是错误的。

现在我必须将错误文件(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> 的单独文件中。

1 个答案:

答案 0 :(得分:1)

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

您可以在参考文档中阅读有关Spring Batch提供的一些监听器的更多信息:https://docs.spring.io/spring-batch/reference/html/configureStep.html#interceptingStepExecution