Vert.x未来处理程序设置

时间:2017-08-22 11:18:59

标签: java vert.x

请查看位于df['Amount, DKK'] = np.vectorize(convert_rates)( amount=df['Amount'], currency=df['Currency'], PstngDate=df['Date'] ) 的课程内的以下代码:

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()); } }); } 始终返回完整的未来:

initHttpServ

为什么在我的情况下永远不会调用private Future<Void> initHttpServ(){ Future<Void> httpServerFuture = Future.future(); httpServerFuture.complete(); return httpServerFuture; } ? 我理解这个概念:

  • 创建未来serverStartFuture.setHandler
  • 设置f future handler
  • 忘了它
  • 代码集中的其他位置ff / complete
  • 设置fail结果后,处理程序将调用

但我的代码似乎否定了这种方法。 我做错了吗?

1 个答案:

答案 0 :(得分:1)

你不应该设置serverStartFuture处理程序。当部署Verticle时,它由Vert.x设置。当你的Verticle成功启动时,你应该完成未来,否则就会失败。

请参阅Vert.x核心文档中的Asynchronous Verticle start and stop