Применить процессор к нескольким элементам вместо одного в Spring btach

В одном из моих пакетов мне нужно вызвать веб-службу, чтобы обогатить некоторые данные из элемента, прочитанного в БД, проверить некоторые значения, а затем записать этот элемент обогащения в другую таблицу. Мой веб-сервис может поддерживать несколько запросов в одном вызове, чтобы свести к минимуму количество вызовов веб-сервиса. На самом деле мой вызов веб-сервиса определяется как процессор:

<batch:tasklet task-executor="taskExecutor">
  <batch:chunk reader="bookingReader" processor="bookingEnrichWSProcessor"
    writer="bookingCompositeWriter" commit-interval="10" />
</batch:tasklet>

Похоже, что только средство записи элементов может поддерживать запись нескольких элементов за один вызов, используя свойство commit-interval в определении шага.

Что мне нужно, так это прочитать элементы десять на десять с помощью считывателя и вызвать ws с 10 элементами, прежде чем снова записывать их в другую таблицу.

Возможно ли это сделать в классе процессоров? или я должен перенести эту логику в писатель.

Спасибо за нашу помощь


person omartin    schedule 27.07.2012    source источник


Ответы (1)


Вы должны изменить свой считыватель, процессор и писатель: читатель должен выводить объект. Этот объект может быть списком ‹ что-то>.

Затем процессор получает этот список в качестве параметра и может вызывать ваш WS с элементами списка.

Наконец, писатель также получит список объектов. Вы их пишете. НЕ забудьте удалить интервал фиксации: поскольку вы обрабатываете только один объект (список из 10 элементов), вы устанавливаете интервал фиксации равным 1 (если вы хотите записать свои 10 элементов).

person Jean-Philippe Briend    schedule 27.07.2012