Java Vert.x未来处理程序设置

Java Vert.x未来处理程序设置,java,vert.x,Java,Vert.x,请查看位于类扩展AbstractVerticle中的以下代码: @Override public void start(Future<Void> serverStartFuture) throws Exception { log.info("Deploying " + this.getClass().toString() + " verticle..."); //TODO: Handler is not calling. serverStartFuture

请查看位于类扩展
AbstractVerticle
中的以下代码:

@Override
public void start(Future<Void> serverStartFuture) throws Exception {

    log.info("Deploying " + this.getClass().toString() + " verticle...");

    //TODO: Handler is not calling.
    serverStartFuture.setHandler(event -> {
        if(event.succeeded()){
            log.info("Deploying " + this.getClass().toString() + " verticle SUCCESS");
        } else if (event.failed()){
            log.error("Deploying " + this.getClass().toString() + " verticle FAIL:");
            log.error(event.cause());
        }
    });

    /* To follow future compose pattern in future */
    Future<Void> initSteps = this.initHttpServ();
    initSteps.setHandler((AsyncResult<Void> asyncResult) -> {
        if(asyncResult.succeeded()){
            serverStartFuture.complete();
        }else if(asyncResult.failed()){
            serverStartFuture.fail(asyncResult.cause());
        }
    });

}
为什么在我的例子中从未调用过
serverStartFuture.setHandler
? 我这样理解这个概念:

  • 创建未来
    f
  • 设置未来处理程序
  • 算了吧
  • 代码集中的其他地方
    f
    完成
    /
    失败
  • 设置
    f
    result后,处理程序将调用
但我的代码似乎否定了这种方法。
我做错什么了吗?

您不应该设置
serverStartFuture
处理程序。当垂直体展开时,它由Vert.x设置。当你的垂直运动成功开始时,你应该完成未来,否则就失败了


请参阅Vert.x core文档。

我在日志中看到“信息:部署类[classname]垂直成功”。您能为您显示日志中出现的内容以及您希望看到的内容吗?哦,我明白了,但我知道传递给启动方法的
future
是唯一一个不能以这种方式工作的方法。
private Future<Void> initHttpServ(){
    Future<Void> httpServerFuture = Future.future();
    httpServerFuture.complete();
    return  httpServerFuture;
}