MultiResourceItemReader完成处理文件事件

时间:2014-12-30 16:53:40

标签: spring batch-processing spring-batch

如何知道某个步骤何时完成处理(使用的处理器)文件中的所有行? (MultiResourceItemReader =多个文件)

我做到了:

@CommonsLog
public class MultiResourceItemReaderWrapper<T> extends MultiResourceItemReader<T> {

    private List<URI> processedResources = new ArrayList<URI>();

    @Override
    public void setResources(Resource[] resources) {
        super.setResources(resources);
        for (Resource resource : resources) {
            log.info("Resource found to be read: " + resource);
            try {
                processedResources.add(resource.getURI());
            } catch (IOException e) {
                log.error(e);
            }
        }
    }

    @AfterStep
    public void afterStep(StepExecution stepExecution) {
        stepExecution.getExecutionContext().put("MultiResourceItemReaderWrapper.processedResources", processedResources);
    }

}

在未来的步骤中,我想存档这些文件(移动/重命名)。

我不知道是否是最好的方法。但是使用这种方法,我不知道文件是否已经处理而没有错误(我想归档处理过的文件而没有错误)?

你能帮助我吗?

1 个答案:

答案 0 :(得分:0)

使用域对象中的ResourceAware界面; read将当前资源名称设置为读取项目,您可以检查文件更改。