У меня есть метод Vert.x 3.7.1, который развертывает несколько вершин и, если все развертывания завершаются успешно, отправляет сообщение через шину событий, которая выполняет некоторую работу при запуске. Структура метода выглядит следующим образом:
void deploy() {
Future<Void> v1Future = Future.future();
Future<Void> v2Future = Future.future();
// ...
vertx.deployVerticle(new SomeVerticle(), result -> {
if (result.succeeded()) {
v1Future.complete();
} else {
v1Future.fail(result.cause());
}
});
// ...
List<Future<Void>> allFutures = ImmutableList.of(v1Future, v2Future);
CompositeFuture.all(allFutures).setHandler(result -> {
if (result.succeeded()) {
vertx.eventBus().send("some-address");
}
});
}
Я хочу повторить эту же функциональность с Promise
s в Vert.x 3.8.1+, поскольку Future.future()
и большинство связанных методовсейчас устарела. Проблема в том, что нет CompositePromise
или чего-то похожего на Future
s. Как я могу выполнить серию развертываний, а затем, если и только если все развертывания будут успешными, сделать что-то еще, используя новый класс Promise
в Vert.x 3.8.1 +?