2012-04-27 12 views
6

Team,Wiosna Batch Jak ustawić interwał czasowy pomiędzy każdym wywołaniu w kawałek tasklet

Robię POC technicznej dla odczytu rekordów z pliku płaskiego i wstawienie danych do bazy danych.

Używam zadanie klocek i uruchomieniem tego zadania za pomocą sprężyny wsadowy Administrator pomyślnie.

muszę realizować politykę ponawiania wraz z funkcji, aby ustawić interwał czasowy pomiędzy każdym ponownego wprowadzenia. Utknąłem z ustawianiem odstępu czasowego pomiędzy kolejnymi próbami, ponieważ uchwyt nie obsługuje go bezpośrednio. Czy jest w tym jakaś praca?

Mój kod jest

<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

Będziesz musiał zdefiniować retry-policy and backoff policy, aby ustawić interwał. Domyślnie wiosna pozwala tylko ustawić próby ponowienia. sprawdź ten link, aby uzyskać pomoc http://www.javabeat.net/articles/309-configure-spring-batch-to-retrying-on-error-1.html – Kshitij

+0

również odnosić się do tego dla polityki ograniczania mocy http : //forum.springsource.org/showthread.php 118637-How do określenia odstępu pomiędzy kolejnymi-retry-próbach – Kshitij

+0

@Kshitij: Dzięki za link Kshitij. Myślałem o tym samym, ale nie ma opcji, aby ustawić politykę backoff z porcją. – Abhilash

Odpowiedz

5

W twoim przypadku konfiguracja będzie wyglądać następująco:

Wiosna serii 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> 

Niestety batch nazw nie obsługuje ustawiania backOffPolicy bezpośrednio do step, patrz BATCH-1441.

Wiosna Batch 3,0

Wiosną Batch 3,0 pewne zajęcia zostały przeniesione do innych pakietów. To jest fragment konfiguracji:

<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

Dziękuję dma_k. Podejście to działało w porządku. Jeżeli – Abhilash

+1

be alexfdz

+0

Dzięki, poprawione. –

Powiązane problemy