Вместо разделения логических шагов путем помещения их в новую строку, как в императивном программировании, реактивное программирование использует композицию методов и цепочку (операторы).
Так что, как только вы получите Flux<T>
или Mono<T>
(здесь ваши правила от Redis), вам нужно объединить операторы для создания ваших шагов обработки декларативным способом.
Шаг, который преобразует каждый элемент ввода <T>
в один соответствующий элемент <R>
в памяти и без задержки обычно выражается как map(Function<T, R>)
и выдает Flux<R>
. В свою очередь, цепочка дополнительных операторов на этом.
Шаг, который либо преобразует 1 элемент <T>
в N элементов <R>
и / или делает это асинхронно (ie преобразование возвращает Flux<R>
для каждого T) обычно выражается как flatMap(Function<T, Publisher<R>>)
.
Кроме того, в Reactor имеется богатый словарь специализированных операторов, которые вы можете исследовать .
В конце Ваша цель состоит в том, чтобы связать всех этих операторов, чтобы описать ваш конвейер обработки, который будет Mono<RETURN_TYPE>
или Flux<RETURN_TYPE>
. RETURN_TYPE в webflux может быть бизнес-типом, который Spring может маршалировать, или одним из классов, ориентированных на ответ Spring.