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