Spring Batch документация о чан-ориентированном шаге против реальности?
Надокументация Spring Batch для настройки шага - наглядное изображение описывает, как выполняется процесс чтения и записи.
read
process
...
read
process
// until #amountOfReadsAndProcesses = commit interval
write
Соответствующий (согласно документу):
List items = new Arraylist();
for(int i = 0; i < commitInterval; i++){
Object item = itemReader.read()
Object processedItem = itemProcessor.process(item);
items.add(processedItem);
}
itemWriter.write(items);
Однако, когда я отлаживаю и ставлю точку останова в методе чтения считывателя и точку останова в методе процесса процессора, я вижу следующее поведение:
read
...
read
// until #amountOfReads = commit interval
process
...
process
// until #amountOfProcesses = commit interval
write
Так что документация не так? Или мне не хватает какой-то конфигурации, чтобы заставить ее вести себя как документация (там ничего не нашел).
Проблема, которую я имею, состоит в том, что каждое последовательное чтение теперь зависит от состояния от процессора. Считыватель представляет собой композит, который считывает два источника параллельно, в зависимости от того, какие элементы чтения в одном из источников читаются только в первом, втором или обоих источниках во время одной операции чтения. Но статус того, какие источники читать, сделан в процессоре. В настоящее время единственным решением является интервал фиксации 1, который не очень оптимален для производительности.