2014-05-21 14 views
5

sto usando batch primavera per eseguire i miei lavori quando il lettore è org.springframework.batch.item.database.JpaPagingItemReaderPrimavera Batch Reader Multi infila Job

e il mio lavoro configurato con il parametro: throttle-limit = "6"

C'è qualche conflitto di dati sui thread durante la lettura dei dati dal lettore?

perché sto facendo rivivere il seguente avviso:

[org.springframework.batch.core.step.item.ChunkMonitor:109] - No ItemReader set (must be concurrent step), so ignoring offset data. 
[org.springframework.batch.core.step.item.ChunkMonitor:141] - ItemStream was opened in a different thread. Restart data could be compromised. 
[org.springframework.batch.core.step.item.ChunkMonitor:141] - ItemStream was opened in a different thread. Restart data could be compromised. 
[org.springframework.batch.core.step.item.ChunkMonitor:141] - ItemStream was opened in a different thread. Restart data could be compromised. 

risposta

4

Mentre il JpaPagingItemReader è sicuro in che usando per leggere da più thread discussione è ok, che il lettore non supporta il riavvio quando viene utilizzato con più thread. Gli avvertimenti sono davvero lì per indicare che è necessario impostare lo stato di salvataggio su falso (JpaPaginingItemReader#setSaveState(boolean)). La documentazione per questa classe illustra la necessità di impostare lo stato di salvataggio su falso qui: http://docs.spring.io/spring-batch/trunk/apidocs/org/springframework/batch/item/database/JpaPagingItemReader.html

Il motivo è che lo stato di riavvio finisce per essere condiviso su tutti i thread in modo che finiscano l'uno sull'altro.

+0

Impostazione saveState come falso in realtà non aiuta :( –

+0

Perché non lo fa? –

+0

Stiamo usando MongoItemWriter e secondo doc è anche thread-safe, ma l'impostazione saveState = false non ha evitato i log di avviso che sono elencati nella domanda originale: –

Problemi correlati