如何确保在进入下一个作业步骤之前完成所有步骤分区

时间:2014-12-06 15:56:04

标签: spring spring-batch spring-xd

在我的工作中,我有一个数据库导出到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页的这个非常体系结构的考虑因素:

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

我在文档和网页上搜索了如何确保所有步骤分区在进入下一个作业步骤之前完成并且似乎无法找到答案的答案。

它必须是一个共同的考虑因素,显然我错过了一些东西,很重要。

1 个答案:

答案 0 :(得分:0)

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

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