经常出现非瞬态扁平物品异常弹簧批次

时间:2014-07-05 08:07:37

标签: java spring spring-mvc spring-batch

以下是我的春季批量配置:我使用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>

但我经常会遇到NonTransientFlatFileException:无法读取资源。看到日志后才知道One thread可能正在尝试从文件1中读取下一个项目,而另一个线程正在关闭当前已完成的输入文件1,从而导致I / O异常。

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

是否有任何解决方案可以在春季批次中克服此异常。许多使用multiresourceItemPartioner分区的人也会面临这个例外吗?

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

0 个答案:

没有答案