Команды соединения реактора

Я практикую Reactor в Spring WebFlux и считаю, что кривая обучения довольно крутая. Все, что я хотел сделать, это что-то вроде:

Данные, поступающие от контроллера. Я запрашиваю настройки сайта, которые возвращают Mono. Я делаю запрос к репозиторию пользователей (чтобы позже узнать, был ли пользователь уже зарегистрирован или нет), который возвращает Mono.

Теперь я хочу сделать что-то вроде:

User user = new User();

userRepository.findByUsername(username).flatMap(dbUser -> Mono.error(new UserAlreadyRegisteredException()).switchOnEmpty(settingsRepository.getSettings().flatMap(settings -> validateUser(user,incomingData,settings)).then(userRepository.save(user));

//validateUser is a method which returns Mono<User> preferably with incomingData copied to the User object

Изменить: проблема заключалась в том, что я сохранял настройки в @PostConstruct, и я не называл подписку.


person Peter    schedule 01.11.2018    source источник


Ответы (1)


Пройдите по следующим ссылкам:

  1. https://projectreactor.io/learn

  2. Я прошел через это руководство, когда начал с него: https://tech.io/playgrounds/929/reactive-programming-with-reactor-3/Intro

Вот это видео, https://youtu.be/Cj4foJzPF80, где Брайан Клозель и Себастьян решают все эти проблемы. упоминается в учебнике tech.io. И того, и другого было вполне достаточно для начала. Запустите руководство, прочтите документацию (мне очень помогло) и, если что-то не так, перейдите к видео за помощью. Однако вы должны увидеть начало видео, где объясняются концепции.

Просмотрите их, а затем сообщите нам, если у вас все еще есть проблемы.

person uneq95    schedule 01.11.2018
comment
Спасибо, посмотрю. :) - person Peter; 01.11.2018
comment
Учебник по tech.io может потребовать небольшого освежения, не могу вспомнить, было ли оно полностью обновлено до 3.2.0.RELEASE. Тем не менее, операторы там довольно простые, и их не следовало менять в настоящее время. - person Simon Baslé; 05.11.2018
comment
Да! Но для начала мне этого было достаточно, поэтому я поделился этим. - person uneq95; 05.11.2018