Spring batch: повторите задание, если оно не выполнено в определенное время - PullRequest
0 голосов
/ 30 апреля 2018

Я работаю над пакетным приложением Spring, где я использовал RetryTemplate с SimpleRetryPolicy.

В этом приложении ItemProcessor обычно занимает 30-35 минут, чтобы выполнить определенное задание. Но иногда для выполнения той же задачи требуется более 2 часов.

Можно ли повторить попытку ItemProcessor, если назначенное задание не выполнено в течение заданного периода времени?

Мне нужны некоторые встроенные функции Java / Spring вместо написания собственной логики тайм-аута.

1 Ответ

0 голосов
/ 03 мая 2018

Вы можете определить 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.

...