Spring batch: повторное выполнение задания, если оно не выполнено в определенное время
Я работаю над приложением Spring, где я использовал RetryTemplate
с SimpleRetryPolicy
,
В этом приложении ItemProcessor
обычно требуется 30-35 минут, чтобы выполнить определенное задание. Но иногда для выполнения той же задачи требуется более 2 часов.
Есть ли способ повторить мой ItemProcessor
, если назначенное задание не выполнено в течение заданного периода времени?
Я ищу некоторые встроенные функции Java/Spring вместо того, чтобы писать собственную логику тайм-аута.
1 ответ
Вы можете определить transactional-attributes
на данный шаг. ( https://docs.spring.io/spring-batch/trunk/reference/htmlsingle/)
Атрибуты транзакции можно использовать для управления параметрами изоляции, распространения и времени ожидания.
<step id="step1">
<tasklet>
<chunk reader="itemReader" writer="itemWriter" commit-interval="2"/>
<transaction-attributes isolation="DEFAULT"
propagation="REQUIRED"
timeout="30"/>
</tasklet>
</step>
Если вы используете конфигурацию Java, проверьте /questions/42693340/ekvivalent-atributov-tranzaktsii-spring-batch-java-config/42693348#42693348.