Встречается на собеседованиях • сегодня
Какие решишь задачу при чтении 20 млн записей из базы данных и отправки в Message Broker
Для обработки 20 млн записей эффективно использовать **пагинацию** и **батчинг**:
1. **Чтение пачками** через `LIMIT-OFFSET` или курсоры, чтобы не грузить все данные в память:
```java
int batchSize = 1000;
int offset = 0;
List batch;
do {
batch = repository.findBatch(offset, batchSize);
sendToBroker(batch);
offset += batchSize;
} while (!batch.isEmpty());
```
2. **Асинхронная отправка** с буферизацией:
- Использовать `ExecutorService` для параллельной обработки
- Накапливать записи в буфер перед отправкой
3. **Обработка ошибок**:
- Реализовать retry механизм для неудачных отправок
- Логировать прогресс для возможности восстановления
4. **Оптимизации**:
- Выключать ORM-маппинг если возможно
- Использовать projection для чтения только нужных полей
- Настроить batch-размер исходя из нагрузки на БД и брокер
Для Spring Batch можно использовать `JdbcCursorItemReader` + `KafkaItemWriter`.

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы