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.

Другие вопросы по тегам