以并行方式部署多个Verticle

时间:2018-06-04 20:47:14

标签: java rx-java2 vert.x

我正在研究Vertx.ioRxJava2。我想要实现的是以并行方式完全部署一些Verticle。这就是我想要做的事情:

...
public static void main(String[] args) {
  log = LoggerFactory.getLogger(TheMainApp.class);
  VertxOptions vertxOptions = new VertxOptions();
  Vertx vertx = Vertx.vertx(vertxOptions);

  try {
    JsonObject config = getPropertyFile(args);
    Flowable<Verticle> verticlesToDeploy = Flowable
        .fromArray(new Verticle[] { new Verticle1(), new Verticle2(), new Verticle3(), ..., new VerticleN() });
    verticlesToDeploy.flatMap(verticle -> {
    return RxHelper.deployVerticle(vertx, verticle, new DeploymentOptions().setConfig(config))
        .subscribeOn(Schedulers.io()).doOnError(err -> {
            log.error(err.getCause());
            throw new RuntimeException(err);
        }).doAfterSuccess(ok -> {
            log.info("Verticle {} deployed.", ok);
        }).toFlowable();
    });
  } catch (CompositeException | IOException e) {
    log.error("Deployment interrupted.");
    System.out.println(e.getMessage());
    vertx.close();
  }
}
...

但它不起作用。没有部署Verticle。我错过了什么?

1 个答案:

答案 0 :(得分:0)

.flatMap之后,您不会使用生成的观察结果。由于代码是在main函数中调用的,因此您可能需要添加.blockingSubscribe()