我在Vert.x手册中找到了以下句子。
也不允许工作者Verticle使用TCP或HTTP客户端或 服务器
JDBC也是一个TCP客户端,对吗?
然后我不能在worker verticle中使用JDBC阻塞调用?
答案 0 :(得分:1)
不,您不能在Verticle中使用阻止JDBC调用。有一个JDBC persistor module使用工作队列模块来共享多个处理器的负载
Vert.x 2.0将允许在模块中进行线程化,这样就不会出现问题
答案 1 :(得分:0)
当前(Vert.x 3.x)您可以将verticle部署为worker verticle或使用
vertx.executeBlocking(...)
在两种情况下,您的代码都将使用工作池中的线程运行,而不是在事件循环线程上运行,从而允许您调用阻塞代码。
答案 2 :(得分:0)
您可以在工作线程中使用HTTP或TCP调用,但是这些调用必须是“异步”的。您不得阻塞线程。正如Kamil(向上)所说,您必须将verticle部署为worker,如果您有同步调用,则应使用vertx.executeBlocking(...)。 在这里,您可以获得一些信息:https://developer.mastercard.com/blog/the-vertx-worker-model