【问题标题】:Spring Batch commit-interval configuration not workingSpring Batch 提交间隔配置不起作用
【发布时间】:2015-10-15 10:49:11
【问题描述】:

我有一个使用 Spring Batch Input 阅读器 Writer 的简单程序。 该程序的目的是简单地读取一个 csv 文件。

我已将 commit-interval 设置为 5。csv 文件只有 5 条记录,但由于某种原因,尽管 commit-interval 设置为 5,但由于某种原因,Writer 被调用了 3 次。我原以为只会调用 writer曾经基于我的理解,项目阅读器和处理器将逐行读取每个项目,然后编写器将一次处理所有 5 个项目。我想我不清楚提交间隔的影响。有什么建议吗?

【问题讨论】:

  • 我的问题的原因是我有一百万条记录,我可能必须使用 Java 集合读取并传递到下一步。现在,当我尝试从一个小文件中读取时,只有最后一个使用 StepExecution 将编号等于指定的 commit-linterval 的块传递到下一步。以前的记录没有通过。如何确保所有记录都通过。更改 commit-interval 有帮助吗?或者还有其他方法吗?
  • 我正在为此使用 ExecutionContext 和 ExecutionContextPromotionListener。但只有等于提交间隔的最后一个块被设置并在下一步中读取。
  • 请分享配置文件。我想知道您正在使用的reader、writer 和processor 的类型。
  • 当然。我们使用的阅读器是FlatFileItemReader。处理器是ItemProcessor,Writer是ItemWriter。这些是API提供的类。
  • 请看看这个网站。它可能对你有帮助。 parameshk.blogspot.in/2013/11/…

标签: java spring csv


【解决方案1】:

我认为你应该有类似的东西:

<job id="stepJob">
   <step id="step1">
      <tasklet>
          <chunk reader="inputReader" writer="outputWriter" commit-interval="5"/>
      </tasklet>
    </step>
</job>

示例步骤的最后一部分是块标签,我们在其中定义了该步骤的块。示例中的 commit-interval 属性设置为 5,这意味着没有 记录将被写入,直到读取和处理 5 条记录。

【讨论】:

    猜你喜欢
    • 2016-10-18
    • 2015-12-10
    • 2019-09-26
    • 2011-10-11
    • 1970-01-01
    • 2018-05-14
    • 2014-08-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多