Я вижу замешательство.Параметр pageSize
в JpaPagingItemReader
не имеет ничего общего с chunkSize
(или commit-interval
) шага, ориентированного на куски.
Если вы берете JpaPagingItemReader
и используете его внешаг, ориентированный на чанк, с pageSize = 4, он выбирает 4 элемента за раз (т. е. на страницу).Теперь эти 4 элемента можно обрабатывать, например, порциями по 2, и у вас будет по две порции на страницу.JpaPagingItemReader
будет считывать первую страницу (список из 4 элементов) и затем возвращать элементы из этого списка каждый раз, когда на шаге, ориентированном на порцию, выполняется вызов read
.Вот пример с pageSize = 4
, chunkSize = 2
, totalItems = 8
и прослушивателем чанков:
ChunkListener.beforeChunk
Reading page 0
Reading item1
Reading item2
Writing item1
Writing item2
ChunkListener.afterChunk
ChunkListener.beforeChunk
Reading item3
Reading item4
Writing item3
Writing item4
ChunkListener.afterChunk
ChunkListener.beforeChunk
Reading page 1
Reading item5
Reading item6
Writing item5
Writing item6
ChunkListener.afterChunk
ChunkListener.beforeChunk
Reading item7
Reading item8
Writing item7
Writing item8
ChunkListener.afterChunk
ChunkListener.beforeChunk
Reading page 2
Reading item = null
ChunkListener.afterChunk
Я создал пример приложения с этой конфигурацией, чтобы вы могли играть си посмотрите, как все это работает.
Надеюсь, это поможет понять модель обработки, ориентированную на куски, при использовании с устройством чтения элементов подкачки.