Spring 批处理:如果未在特定时间完成,则重试作业
Spring batch: Retry job if does not complete in particular time
我正在开发一个 Spring 批处理应用程序,我在其中使用了 RetryTemplate
和 SimpleRetryPolicy
。
在此应用程序中,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 配置检查 。
我正在开发一个 Spring 批处理应用程序,我在其中使用了 RetryTemplate
和 SimpleRetryPolicy
。
在此应用程序中,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 配置检查 。