Узкое место SpringBatch у ItemProcessor

Мне нужно перенести некоторые данные из одной таблицы в другую, применяя некоторую промежуточную обработку. Обработка является собственностью и предоставляется как услуга REST. Поэтому мне нужно прочитать записи из таблицы, вызвать службы REST, а затем записать обработанную запись в другую таблицу. Как мне реализовать это как Spring Batch, чтобы я мог параллельно выполнять вызовы REST для нескольких записей, потому что именно там я ожидаю много времени для каждой записи? ItemProcessor, где я планирую сделать вызов REST, принимает только один элемент в методе процесса.

2 ответа

Решение

Когда обработка является узким местом, вы можете использовать:

  • AsyncItemProcessor: это будет обрабатывать элементы асинхронно и может помочь в масштабировании обработки. Подробнее об этом компоненте читайте здесь: https://docs.spring.io/spring-batch/4.0.x/reference/html/spring-batch-integration.html

  • Удаленное разделение на блоки: с помощью этой опции масштабируемости вы отправляете данные удаленным работникам для обработки. Это поможет вам масштабировать обработку горизонтально, добавляя больше рабочих по мере необходимости. Подробнее об удаленном разделении на фрагменты в этом разделе: https://docs.spring.io/spring-batch/4.0.x/reference/html/spring-batch-integration.html

Есть несколько важных соображений, на которые вы хотели бы обратить внимание при выборе опции масштабируемости, они подробно описаны здесь: /questions/31068019/raznitsa-mezhdu-podpruzhinennyim-udalennyim-razdeleniem-na-chasti-i-udalennyim-razdeleniem/31068024#31068024

У меня были те же требования, и, как сказал @Mahmoud: Есть несколько хороших подходов:

Удаленное разбиение:

Обработкой и записью занимается рабочий, а чтением — мастер. Мастер должен прочитать, а затем передать рабочие записи по сети.

Удаленное разделение на части на практике

В случае асинхронной обработки, которая позволит вам также масштабировать пакет:

Учебное пособие Spring Batch Integration с использованием асинхронной обработки

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