Я работаю с Vert.x и MainVerticle написано в Java. Мне нужно развернуть различные типы статей в настраиваемом количестве экземпляров. Вот почему я попытался создать Список фьючерсов, и после этого я мог бы использовать CompositeFuture.all () для завершения процесса.
Проблема в том, что составное будущее никогда не вызывает обработчик. Для каждой вертикали появляется сообщение [>] Развернутая вертикаль ... . Но, в конце концов, сообщение [>] Развертывание статей завершено никогда не появляется. Версии работают, но мне нужно выполнить другие действия, когда все развертывания будут готовы.
Это фрагмент:
private Future<Void> loadVerticles()
{
Promise<Void> promise = Promise.promise();
List<Future<Void>> verticleDeployments = new ArrayList<>();
for (Integer i = 0; i < instancesA; i++)
verticleDeployments.add(deployHelper(ApiVerticleA.class.getName()));
for (Integer i = 0; i < instancesB; i++)
verticleDeployments.add(deployHelper(ApiVerticleB.class.getName()));
for (Integer i = 0; i < instancesC; i++)
verticleDeployments.add(deployHelper(ApiVerticleC.class.getName()));
CompositeFuture.all(new ArrayList<>(verticleDeployments)).setHandler( result -> {
if (result.succeeded()) {
System.out.println("[>] Verticles deployment complete"); // This message never appears
promise.complete();
}
else
promise.fail(result.cause());
});
return promise.future();
}
private Future<Void> deployHelper(String name)
{
Promise<Void> promise = Promise.promise();
vertx.deployVerticle(name, res -> {
if(res.failed()) {
System.out.println("[>] Failed to deploy verticle " + name);
promise.fail(res.cause());
} else {
System.out.println("[>] Deployed verticle " + name); // This message is printed for each verticle instance
promise.complete();
}
});
return promise.future();
}