2012-04-27 11 views
6

squadra,primavera Batch Come impostare intervallo di tempo tra ogni chiamata in un pezzo tasklet

sto facendo un poc tecnica per la lettura di record da un file flat e l'inserimento dei dati nel database.

Sto utilizzando l'attività di blocco e l'esecuzione di questo lavoro utilizzando l'amministratore batch di primavera correttamente.

Devo implementare il criterio Riprova insieme a una funzionalità per impostare l'intervallo di tempo tra ogni tentativo. Sono bloccato con l'impostazione dell'intervallo di tempo tra ogni tentativo perché il mandrino non lo supporta direttamente. C'è qualche soluzione alternativa per questo?

mio codice è

<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

sarà necessario definire il criterio retry e il criterio di backoff per impostare l'intervallo. Per impostazione predefinita, la molla consente solo di impostare i tentativi di nuovo tentativo. Fare riferimento a questo link per ulteriori informazioni http://www.javabeat.net/articles/309-configure-spring-batch-to-retrying-on-error-1.html – Kshitij

+0

fare riferimento anche a questo per http backoff-policy : //forum.springsource.org/showthread.php? 118637-Come-specificare-intervallo-tra-tentativi successivi-tentativi – Kshitij

+0

@Kshitij: Grazie per il collegamento Kshitij. Ho pensato allo stesso, ma non c'è alcuna opzione per impostare la politica di backoff con un chunk. – Abhilash

risposta

5

Nel tuo caso la configurazione sarà simile:

Primavera 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> 

Purtroppo, batch namespace non supporta l'impostazione backOffPolicy direttamente su step, vedere BATCH-1441.

Primavera Batch 3.0

Nella primavera Batch 3.0 alcune classi si sono trasferiti in altri pacchetti. Questo è il frammento di configurazione:

<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

Grazie dma_k. Questo approccio ha funzionato bene – Abhilash

+1

be alexfdz

+0

Grazie, corretto. –

Problemi correlati