Встречается на собеседованиях • сегодня

Как сделать блокирующий вызов в WebFlux приложении

Блокирующие вызовы в WebFlux нарушают реактивную модель и могут привести к деградации производительности. Однако, если необходимо выполнить такой вызов (например, JDBC или блокирующий API), следует:

  1. Вынести его в отдельный Scheduler через Mono/Flux.fromCallable()
  2. Использовать subscribeOn(Schedulers.boundedElastic()) для изоляции блокирующего кода

Пример:

java
Mono.fromCallable(() -> {
    // Блокирующий вызов
    return blockingRepository.findById(id);
})
.subscribeOn(Schedulers.boundedElastic())

Важно:

  • Не используйте block() в реактивном коде
  • boundedElastic ограничивает число потоков, предотвращая истощение ресурсов
  • По возможности заменяйте блокирующие API на реактивные аналоги (R2DBC вместо JDBC)
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы