2014-05-21 11 views
5

Używam Wiosna wsadowy do uruchomienia moich zadań gdy czytelnik jest org.springframework.batch.item.database.JpaPagingItemReaderWiosna Batch Reader w wielu Threader Hioba

a moim zadaniem skonfigurowany z parametrem: Ograniczenie przepustnicy = "6"

Czy podczas odczytu danych z czytnika występują konflikty danych wątków?

dlatego jestem ożywienia następujące ostrzeżenie:

[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. 

Odpowiedz

4

Choć JpaPagingItemReader że jest bezpieczny w użyciu go czytać z wielu wątków wątek jest ok, że czytelnik nie będzie wspierać restart gdy stosowane przez wielu wątków. Ostrzeżenia naprawdę wskazują, że musisz ustawić stan zapisu na false (JpaPaginingItemReader#setSaveState(boolean)). Dokumentacja dla tej klasy omawia potrzebę ustawienia stanu zapisywania jako fałszywego tutaj: http://docs.spring.io/spring-batch/trunk/apidocs/org/springframework/batch/item/database/JpaPagingItemReader.html

Powodem tego jest to, że stan ponownego uruchomienia kończy się na udostępnianiu we wszystkich wątkach, aby w końcu nadepnąć na siebie.

+0

Ustawienie parametru saveState jako false nie pomaga :( –

+0

Dlaczego tak nie jest? –

+0

Używamy MongoItemWriter i zgodnie z dokumentem jest to również bezpieczne dla wątków, ale ustawienie saveState = false nie uniknęło wpisów ostrzegawczych wymienionych na liście w oryginalnym pytaniu: –

Powiązane problemy