在我的工作中,我有一个数据库导出到 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 页列出了这个非常架构的考虑:
此外,架构应该考虑分区的合并。关键问题包括: • 在进入下一个工作步骤之前必须完成所有分区吗?
我已经在文档和网络上搜索了如何确保在进入下一个工作步骤之前完成所有步骤分区的答案,但似乎找不到答案。
不过,这一定是一个普遍的考虑,显然我错过了一些重要的东西。