Учитывая следующую конфигурацию задания:
Код: Выделить всё
@Bean
public Step jobStep() {
return new StepBuilder("stepName", repo)
. chunk(10, txnManager)
.reader(reader)
.processor(processor)
.writer(writer)
.build();
}
Код: Выделить всё
public class JobProcessor implements ItemProcessor {
@Override
public List process(List items) {
for (Entity record: items) {
//do some logic
return items;
}
Размер списка в ItemProcessor равен всего 2 – почему он выполняется еще 8 раз если передан весь набор записей? Единственный способ избежать дублирующей обработки — это отслеживать, обрабатывается (и записывается) элемент или нет.
Это несложно сделать, но я хочу понять, является ли это нормальным поведением. или если я делаю что-то не так.
Вкратце: если набор записей пакета Spring меньше размера фрагмента, разве процессор/записатель не должен запускаться только один раз, поскольку первый фрагмент содержит весь набор записей?
Подробнее здесь: https://stackoverflow.com/questions/784 ... chunk-size