Я пытаюсь использовать WebClient в своем приложении Spring 5 Web MVC.Мой контроллер возвращает представление JSP, поэтому мне нужно дождаться завершения всех асинхронных вызовов перед обработкой ответа пользователю.Пример:
@RequestMapping(value="asyncCalls",method = RequestMethod.GET)
public String start(Map<String,Object> Model)
{
Mono<String> webClientResA = webClient.get().retrieve().bodyToMono(String.class);
Mono<String> webClientResB = webClient.get().retrieve().bodyToMono(String.class);
Mono<String> webClientResC = webClient.get().retrieve().bodyToMono(String.class);
webClientResA.subscribe(res->{model.add(res);});`
webClientResB.subscribe(res->{model.add(res);});
webClientResC.subscribe(res->{model.add(res);});
//database queries, etc.
return "homeJSP/home";
}`
Мне нужно, чтобы основной поток запросов подождал, пока все объекты не появятся в модели, перед рендерингом представления.Единственный способ сделать это - создать экземпляр CountDownLatch (3) и вызвать latch.countDown () в каждой лямбде подписки и вызвать latch.await () перед возвратом.Но есть ли более приемлемый способ сделать это в стандартной среде сервлетов?
Спасибо