У меня есть сценарий, в котором я получаю List<Future<String>>
от обработчиков и теперь должен вернуть Future<List<String>>
. Почему выходные данные всегда пусты, хотя я проверяю все фьючерсы после их завершения.
Future<List<String>> output = Future.future();
List futures =
services.entrySet().stream()
.map(
entry -> {
Future future = Future.future();
webClient
.getAbs(entry.getKey())
.timeout(1000)
.send(
ar -> {
if (ar.succeeded()) {
if (ar.result().statusCode() == HttpResponseStatus.OK.code()) {
services.put(entry.getKey(), "OK");
future.complete(entry.getKey());
}
} else {
services.put(entry.getKey(), "Failed");
future.fail(ar.cause());
}
});
return future;
})
.collect(Collectors.toList());
CompositeFuture.join(futures)
.setHandler(
ar -> {
futures.forEach(
fut -> {
okServices.add(fut.toString());
});
});
output.complete(okServices);
System.out.println(output.result());
return output;