我有一个vert.x Standard Verticle,它解析HttpRequest并准备JsonObject,然后我通过eventbus发送JSONObject。在另一个Worker verticle中,事件被消费,它将启动执行(包括对Penthao Data Integration Java API调用),它阻塞了大约30分钟才完成".kjb“文件执行的API.It。但是vert.x一直在警告工作线程块,所以我的问题是,在vert.x中处理这种情况的最佳实践是什么。任何帮助都将不胜感激。
发布于 2016-05-05 20:05:12
根据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());
});所以这是所有阻塞任务的最佳实践。
发布于 2017-02-21 06:45:56
您还可以将您的verticle部署为worker。
这样:
vertx.deployVerticle(yourVerticleInstance, new DeploymentOptions().setWorker(true));https://stackoverflow.com/questions/37049432
复制相似问题