2015-07-24 13 views
11

Ho un semplice programma che funziona con il lettore di input batch di primavera, Writer. Lo scopo del programma è quello di leggere semplicemente un file csv.Configurazione intervallo di commit batch di primavera non funzionante

Ho impostato il commit-interval su 5. Il file csv aveva solo 5 record ma per qualche motivo il writer è stato chiamato 3 volte sebbene lo commit-interval fosse impostato su 5. Mi aspettavo che lo scrittore venisse chiamato solo una volta in base a la mia comprensione del fatto che il lettore e il processore dell'articolo avrebbero letto ogni elemento riga per riga e quindi lo scrittore avrebbe elaborato tutti e 5 contemporaneamente. Immagino di non essere chiaro sull'impatto dell'intervallo di commit. Qualche consiglio?

+0

Il motivo della mia domanda è che ho un milione di record che potrei dover leggere e passare al passaggio successivo utilizzando una raccolta Java. Ora quando provo a leggere da un file piccolo solo l'ultimo blocco il cui numero è uguale al commit-linterval specificato viene passato al passaggio successivo utilizzando StepExecution. I record precedenti non vengono passati. Come posso garantire che tutti i record vengano superati. Cambierà l'aiuto dell'intervallo di commit? O esiste un altro approccio? – user5053360

+0

Sto usando ExecutionContext ed ExecutionContextPromotionListener per questo.Ma solo l'ultimo chunk che è uguale all'intervallo di commit è impostato e letto nel passaggio successivo. – user5053360

+2

Si prega di condividere il file di configurazione. Voglio conoscere il tipo di 'reader',' writer' e 'processor' che stai usando. – SyntaX

risposta

0

penso che si dovrebbe avere qualcosa di simile:

<job id="stepJob"> 
    <step id="step1"> 
     <tasklet> 
      <chunk reader="inputReader" writer="outputWriter" commit-interval="5"/> 
     </tasklet> 
    </step> 
</job> 

L'ultimo pezzo del passo esempio è il tag pezzo in cui si definisce che cosa è un pezzo per il passo. L'attributo intervallo di commit è impostato su 5 nell'esempio, il che significa che nessun record verrà scritto fino a quando non vengono letti ed elaborati 5 record.

Problemi correlati