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

时间:2018-04-30 10:43:23

标签: spring spring-batch spring-retry retrypolicy spring-batch-job-monitoring

我正在使用Spring批处理应用程序,其中RetryTemplate使用了SimpleRetryPolicy

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

如果在指定时间段内未完成分配的任务,是否可以重试ItemProcessor

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

1 个答案:

答案 0 :(得分:5)

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

  

事务属性可用于控制隔离,传播和超时设置。

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

如果您正在使用Java配置检查https://stackoverflow.com/a/23921558/1942642