我正在使用Spring批处理应用程序,其中RetryTemplate
使用了SimpleRetryPolicy
。
在此应用程序中,ItemProcessor
通常需要30-35分钟才能完成特定任务。但有时,完成同样的任务需要2个多小时。
如果在指定时间段内未完成分配的任务,是否可以重试ItemProcessor
?
我正在寻找一些Java / Spring in-build功能,而不是编写自己的超时逻辑。
答案 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。