Vert.x工作线程阻塞

时间:2016-05-05 11:28:29

标签: worker vert.x

我有一个vert.x标准Verticle基本上,它解析HttpRequest并准备JsonObject然后我通过eventbus发送JSONObject。在另一个工作者Verticle中,事件被消耗并且它将开始执行(包括对Penthao数据集成Java API的调用),它阻止API。大约需要30分钟来完成“.kjb”文件的执行。但是vert.x不断警告工作线程块,所以我的问题是在vert.x中最好的做法是解决这个问题。        任何帮助都将受到高度赞赏。

2 个答案:

答案 0 :(得分:4)

根据vertx doc,所有阻止操作都需要在代码中执行

vertx.executeBlocking(future -> {
  // Call some blocking API that takes a significant amount of time to return
  String result = someAPI.blockingMethod("hello");
  future.complete(result);
}, res -> {
  System.out.println("The result is: " + res.result());
});

所以这是所有阻止任务的最佳实践。

答案 1 :(得分:2)

您也可以将Verticle部署为工作人员。

这样:

vertx.deployVerticle(yourVerticleInstance, new DeploymentOptions().setWorker(true));