Java 频繁出现非TransientFlatItemException Spring批处理

Java 频繁出现非TransientFlatItemException Spring批处理,java,spring,spring-mvc,spring-batch,Java,Spring,Spring Mvc,Spring Batch,下面是我的spring批处理配置:我使用mutiresourcepartitioner对10个文件进行分区 <job id="test" xmlns="http://www.springframework.org/schema/batch"> <step id="master"> <partition step="step2" partitioner="multiPartioner"> <ha

下面是我的spring批处理配置:我使用mutiresourcepartitioner对10个文件进行分区

 <job id="test" xmlns="http://www.springframework.org/schema/batch">
        <step id="master">
          <partition step="step2" partitioner="multiPartioner">
            <handler grid-size="3" task-executor="taskExecutor" />
          </partition>
        </step>
      </job>

      <bean id="multiPartioner"
        class="org.springframework.batch.core.partition.support.MultiResourcePartitioner"
        scope="step">
        <property name="resources" value="file:#{jobParameters[fileDirectory]}/*" />
    </bean>

    <bean id="taskExecutor"
        class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
        <property name="corePoolSize" value="10" />
        <property name="maxPoolSize" value="30" />
      </bean>

        <step id="step2" xmlns="http://www.springframework.org/schema/batch">
          <tasklet transaction-manager="transactionManager">
            <chunk reader="multiReader" writer="testWriter"
              commit-interval="5000">
            </chunk>
          </tasklet>
        </step>

        <bean id="testWriter" class="org.test.customWriter" scope="step" />

        <bean id="multiReader"
            class="org.springframework.batch.item.file.MultiResourceItemReader"
            scope="step">
            <property name="resources" value="#{stepExecutionContext['fileResource']}" />
            <property name="delegate" ref="flatFileItemReader" />
      </bean>
但我经常遇到非TransientFlatFileException:无法读取资源。看到日志后,我们知道一个线程可能正在尝试从文件1读取下一项,而另一个线程正在关闭当前完成的输入文件1,从而导致I/o异常

如果发生此异常,我们也尝试重试,但由于它是非暂时性异常,我们无法重试

在spring批处理中是否有任何解决方案来克服此异常。而且,许多使用multiresourceitempartitioner进行分区的人都会遇到这个例外


网格大小对分区有影响吗?是否有其他配置导致此问题再次发生?

您是否尝试过使用flatFileItemReader而不是MultiResourceItemReader直接读取?嗨,Luca Basso Ricci,没有,我没有尝试使用flatFileItemReader。我试试看。但如果我这样做会发生什么呢。如果我这样做了,那么我能克服这个异常吗?我从来没有使用过partitioner,但我找到的例子是,我从来没有使用过多资源,但flatreader directlyK Luca Basso Ricci会尝试这个选项并让您知道。谢谢你的回复。网格大小对分区有什么影响吗?来自javadoc:分区器的实现,它定位多个资源并将它们的文件名与执行上下文键关联。为每个资源创建ExecutionContext,并将它们标记为{partition0,partition1,…,partitionN}。网格大小将被忽略。