Многопоточная обработка, ориентированная на блоки?

Если я определю это для весенней партии:

<chunk reader = "chunkReader" 
    writer = "chunkWriter" 
    processor = "chunkProcessor" 
    commit-interval = "#{jobParameters['commitSize']}" />

В этой весенней пакетной обработке, ориентированной на фрагменты, обрабатываются ли фрагменты параллельно? И обрабатываются ли отдельные элементы в чанках параллельно?

В основном я спрашиваю, нужно ли мне беспокоиться о многопоточности и условиях гонки.

Это просто определение фрагмента в шаге, ориентированном на фрагменты. Ничего общего с многопоточностью или параллельной обработкой. Вам нужно показать определение включающего тасклета, чтобы увидеть, определил ли он taskExecutor для многопоточного выполнения: docs.spring.io/spring-batch/4.0.x/reference/html/…

Adrian Shum 29.05.2018 03:30
1
1
1 313
1

Ответы 1

Если вы не укажете Spring, все будет последовательно.

Если вы решите использовать многопоточность, пакетное задание может использовать абстракцию Spring TaskExecutor для выполнения каждого фрагмента в своем собственном потоке. Шаг задания можно настроить для выполнения в пуле потоков, обрабатывая каждый фрагмент независимо. По мере обработки фрагментов Spring Batch отслеживает, что было сделано соответствующим образом. Если в любом из потоков возникает ошибка, выполнение задания откатывается или прекращается в соответствии с обычными функциями Spring Batch.

См .: https://docs.spring.io/spring-batch/trunk/reference/html/scalability.html

а также

Как настроить многопоточность в Spring Batch?

Другие вопросы по теме