Я вызываю конечную точку отдыха несколько раз и сохраняю ответ на БД с помощью jpa.Когда все ответы получены, я должен вызвать процедуру хранения на базе данных.
Я пытаюсь использовать webclient для выполнения этого запроса, но я не знаю, как ждать / проверить, что все запросы завершены.
это код, который я использую для вызова конечной точки:
private Mono<DSGetDataResponse> GetData(DSGetDataRequest dataRequest){
try {
return
weblicent.post()
.uri("GetData")
.contentType(MediaType.APPLICATION_JSON)
.accept(MediaType.APPLICATION_JSON_UTF8)
.syncBody(dataRequest)
.retrieve()
.bodyToMono(DSGetDataResponse.class);
} catch (Exception e) {
log.info("Sono in catch (Exception");
e.printStackTrace();
return null;
}
}
и это код, который я использую для вызова вышеуказанного метода
Items_to_request().forEach( x -> {
String token = tokenResponse.getTokenValue();
DSGetDataRequest dataRequest = new DSGetDataRequest(token, this.Richista_DS(x), null);
try{
this.GetData(dataRequest).subscribe(dataResponse -> this.handlerGetDataResponse(dataResponse));
}
catch (Exception e)
{log.info("Sono in catch (Exception");
e.printStackTrace();
}
});
В handlerGetDataResponse я сохраняю ответ только в БД.
Как дождаться завершения всех запросов для вызова процедуры сохранения в БД?
Я знаю, что не смешиваю блокирующий вызов с блокирующим вызовом
Есть ли у вас какие-либо предложения по решению проблемы?
Спасибо, Мирко