Мне нужно подключиться к базе данных реактивным способом, используя пружинный реактор. Вот сценарий, который я бы хотел получить->
1. Подключитесь к БД и получите ответ1
2. Затем подключитесь к базе данных и получите response2, указав параметр response1.
Поскольку все объекты уникальны, я планировал использовать Mono
Mono<Response1> r1 = qrepo.findByID(id)
Mono<Response2> r2 = qrepo.findByID(r1.getParam())
Mono<String> combined = Mono.when(r1, r2).map(t -> {
StringBuffer sb = new StringBuffer();
sb.append(r1.getProp1());
sb.append(r2.getProp2());
Но меня это не беспокоит




Вы должны получить response1, затем отобразить его результат для доступа к параметру и передать его в репозиторий, а затем отобразить результат в строку
Mono<String> resultMono = qrepo.findByID(id)
.flatMap(response1 -> qrepo.findByID(response1.getParam())
.map(response2 -> {
StringBuilder sb = new StringBuilder();
sb.append(response1.getProp1());
sb.append(response2.getProp2());
return sb.toString();
}));
Используйте Mono.zip
Пример:
Mono.zip(Mono.just("hello"), Mono.just("world")).map(tuple2 -> {
return tuple2.getT1() + tuple2.getT2();
});
Mono.zip объединяет данные monos в новый Mono, который будет выполнен, когда все данные Monos создадут элемент.