2012-04-27 1 views
6

команды,Spring Batch Как установить временный интервал между каждым вызовом в Chunk тасклет

Я делаю технический POC для чтения записей из плоского файла и вставок данных в базу данных.

Я использую задачу chunk и выполняю эту работу, используя успешный администратор весны.

Я должен реализовать политику повтора вместе с функцией, чтобы установить временной интервал между каждой попыткой. Я застрял с установкой временного интервала между каждой попыткой, так как патрон не поддерживает его напрямую. Есть ли какая-нибудь работа для этого?

Мой код

<batch:job id="importDataJob" job-repository="jobRepository"> 
    <batch:step id="importDataStep"> 
    <batch:tasklet transaction-manager="transactionManager"> 
     <batch:chunk reader="dataReader" writer="dataWriter" commit-interval="1" retry-limit="3"> 
     <batch:retryable-exception-classes> 
      <batch:include class="javax.naming.ServiceUnavailableException" /> 
     </batch:retryable-exception-classes> 
     </batch:chunk> 
    </batch:tasklet> 
    </batch:step> 
</batch:job> 
+0

необходимо установить политику повторной политики и политики возврата для установки интервала. По умолчанию весна позволяет устанавливать попытки повторной попытки. См. Эту ссылку для получения дополнительной информации. http://www.javabeat.net/articles/309-configure-spring-batch-to-retrying-on-error-1.html – Kshitij

+0

также ссылаются на этот вариант для политики backoff-policy http : //forum.springsource.org/showthread.php? 118637-How-to-define-interval-between-successive-retry-попытки – Kshitij

+0

@Kshitij: Спасибо за ссылку Kshitij. Я думал об этом же, но нет возможности установить политику отсрочки с помощью куска. – Abhilash

ответ

5

В вашем случае конфигурация будет выглядеть следующим образом:

Spring Batch 2.x

<bean id="stepParent" class="org.springframework.batch.core.step.item.FaultTolerantStepFactoryBean" abstract="true"> 
    <property name="backOffPolicy"> 
    <bean class="org.springframework.batch.retry.backoff.FixedBackOffPolicy" 
     <property name="backOffPeriod" value="2000" /> 
    </bean> 
    </property> 
</bean> 

<batch:job id="importDataJob" job-repository="jobRepository"> 
    <batch:step id="importDataStep" parent="stepParent"> 
    ... 
    </batch:step> 
</batch:job> 

К сожалению, batch имен не поддерживает установку backOffPolicy непосредственно до step, см. BATCH-1441.

Spring Batch 3,0

В Spring Batch 3.0 некоторые классы переместились в другие пакеты. Это фрагмент конфигурации:

<bean id="stepParent" 
    class="org.springframework.batch.core.step.factory.FaultTolerantStepFactoryBean"   
    abstract="true"> 

    <property name="backOffPolicy"> 
    <bean class="org.springframework.retry.backoff.FixedBackOffPolicy"> 
     <property name="backOffPeriod" value="2000"/> 
    </bean> 
    </property> 

</bean> 
+0

Спасибо dma_k. Этот подход работал нормально. – Abhilash

+1

be <свойство name = "backOffPeriod" value = "2000" /> – alexfdz

+0

Спасибо, исправлено. –

Смежные вопросы