Gymterview
middle

Какие есть операторы в Project Reactor и для чего они используются?

Операторы в Project Reactor — функции для создания, преобразования, фильтрации и объединения реактивных потоков данных.

Операторы создания

Оператор Описание
just Создаёт Flux/Mono из указанных элементов
fromArray / fromIterable / fromStream Создаёт поток из массива, итерируемого объекта или Stream
fromCallable / fromRunnable / fromSupplier Создаёт Mono из Callable, Runnable или Supplier
range Создаёт Flux из диапазона целых чисел
interval Создаёт Flux, эмитирующий long через регулярные промежутки
empty / error / never Пустой поток / поток с ошибкой / поток без сигналов
defer Создаёт новый Flux/Mono для каждой подписки

Операторы трансформации

Оператор Описание
map Синхронное преобразование каждого элемента
flatMap Преобразует элемент в поток и объединяет результаты (без гарантии порядка)
concatMap Как flatMap, но с сохранением порядка
switchMap Отписывается от предыдущего потока при получении нового
scan Накапливает состояние для каждого элемента
buffer Собирает элементы в списки внутри Flux
window Публикует коллекции элементов как вложенный Flux
groupBy Группирует элементы по ключу

Операторы фильтрации

Оператор Описание
filter Пропускает элементы, удовлетворяющие условию
distinct Пропускает только уникальные элементы
take / takeWhile / takeUntil Ограничивает поток по количеству или условию
skip / skipWhile / skipUntil Пропускает элементы по количеству или условию

Операторы объединения

Оператор Описание
merge Объединяет потоки параллельно (активная подписка)
concat Объединяет потоки последовательно (отложенная подписка)
zip Объединяет элементы из нескольких потоков в пары
combineLatest Объединяет последние значения из нескольких потоков
startWith Добавляет элементы в начало потока

На собеседовании: достаточно знать основные операторы каждой группы и уметь объяснить разницу map vs flatMap, merge vs concat, take vs takeWhile. Частая ошибка — путать map (синхронный, 1:1) и flatMap (асинхронный, 1:N).