Spring 批处理:如果未在特定时间完成,则重试作业

Spring batch: Retry job if does not complete in particular time

我正在开发一个 Spring 批处理应用程序,我在其中使用了 RetryTemplateSimpleRetryPolicy

在此应用程序中,ItemProcessor 通常需要 30-35 分钟才能完成特定任务。但有时,完成同样的任务需要不到 2 小时的时间。

如果分配的任务没有在给定的时间段内完成,有没有办法重试我的 ItemProcessor

我正在寻找一些 Java/Spring 内置功能,而不是编写自己的超时逻辑。

您可以将 transactional-attributes 定义为给定的步骤。 (https://docs.spring.io/spring-batch/trunk/reference/htmlsingle/#transactionAttributes)

Transaction attributes can be used to control the isolation, propagation, and timeout settings.

<step id="step1">
  <tasklet>
      <chunk reader="itemReader" writer="itemWriter" commit-interval="2"/>
      <transaction-attributes isolation="DEFAULT"
                              propagation="REQUIRED"
                              timeout="30"/>
  </tasklet>
</step>

如果您正在使用 Java 配置检查 。