У меня есть список сессий, которые я должен назвать веб-сервисом, чтобы установить какое-либо свойство в каждом сеансе.ЗавершенныйFuture, чтобы сделать webservice звонки и сохранить, когда все сделано
Я пытаюсь вызвать webservice с помощью async-процесса и использовать для этого completeablefuture, так что, когда все будет готово, я могу сохранить их всех в db.
Как это сделать? Пока что мой код выглядит следующим образом, он не работает.
sessions.stream()
.forEach(s -> CompletableFuture.runAsync(() -> webServiceCall(s), executor));
sessionService.saveAll(sessions);
EDIT:
Я пришел к этому решению, не уверен, что это правильный способ сделать это.
List<CompletableFuture<Void>> futures = sessions.stream()
.map(s -> CompletableFuture.runAsync(() -> webServiceCall(s), executor))
.collect(Collectors.toList());
CompletableFuture.allOf(futures.toArray(new CompletableFuture[0]))
.join();
sessionService.saveAll(sessions);
Я использую присоединиться, чтобы убедиться, что ждет ответа вернуться перед сохранением сессий