春季批处理:如果在特定时间内未完成,请重试作业

Sac*_*tre 4 spring spring-batch spring-retry retrypolicy spring-batch-job-monitoring

我的工作,我已经使用了Spring Batch的应用RetryTemplateSimpleRetryPolicy

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

ItemProcessor如果分配的任务在给定时间内未完成,是否可以重试我的方法?

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

小智 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>
Run Code Online (Sandbox Code Playgroud)

如果您使用的是Java配置,请查看/sf/answers/1674509091/