0

在我的工作中,我有一个数据库导出到 csv 分区。下一步使用 MultiResourceItemReader 将这些文件合并到一个文件中。

我的问题是合并步骤开始时文件似乎不可用。我得到了这个例外

java.lang.IllegalStateException: No resources to read. Set strict=false if this is not an error condition.
    at org.springframework.batch.item.file.MultiResourceItemReader.open(MultiResourceItemReader.java:169)
    at org.springframework.batch.item.support.CompositeItemStream.open(CompositeItemStream.java:96)
    at org.springframework.batch.core.step.item.ChunkMonitor.open(ChunkMonitor.java:114)
    at org.springframework.batch.item.support.CompositeItemStream.open(CompositeItemStream.java:96)
    at org.springframework.batch.core.step.tasklet.TaskletStep.open(TaskletStep.java:310)
    at org.springframework.batch.core.step.AbstractStep.execute(AbstractStep.java:195)
    at org.springframework.batch.core.job.SimpleStepHandler.handleStep(SimpleStepHandler.java:148)
    at org.springframework.batch.core.job.flow.JobFlowExecutor.executeStep(JobFlowExecutor.java:64) 

但是在作业失败后,所有部分 csv 文件都在导出目录中可用。在 spring 批处理参考中,它实际上在第 16 页列出了这个非常架构的考虑:

此外,架构应该考虑分区的合并。关键问题包括: • 在进入下一个工作步骤之前必须完成所有分区吗?

我已经在文档和网络上搜索了如何确保在进入下一个工作步骤之前完成所有步骤分区的答案,但似乎找不到答案。

不过,这一定是一个普遍的考虑,显然我错过了一些重要的东西。

4

1 回答 1

0

默认情况下,只有在分区的所有步骤部分都完成后,该步骤才会被标记为完成。您确定下一步是在正确的目录中查找文件吗?

您可以打开日志记录,它应该提供有关步骤完成时间和下一步开始时间的详细信息

于 2014-12-07T04:24:45.810 回答