我可以在Vert.x的worker Verticle中使用JDBC阻塞调用吗?

时间:2013-02-13 07:36:49

标签: jdbc tcp vert.x

我在Vert.x手册中找到了以下句子。

  

也不允许工作者Verticle使用TCP或HTTP客户端或   服务器

JDBC也是一个TCP客户端,对吗?

然后我不能在worker verticle中使用JDBC阻塞调用?

参考: http://vertx.io/manual.html#worker-verticles

3 个答案:

答案 0 :(得分:1)

不,您不能在Verticle中使用阻止JDBC调用。有一个JDBC persistor module使用工作队列模块来共享多个处理器的负载

Vert.x 2.0将允许在模块中进行线程化,这样就不会出现问题

答案 1 :(得分:0)

当前(Vert.x 3.x)您可以将verticle部署为worker verticle或使用

vertx.executeBlocking(...)

在两种情况下,您的代码都将使用工作池中的线程运行,而不是在事件循环线程上运行,从而允许您调用阻塞代码。

https://vertx.io/docs/vertx-core/java/#blocking_code

答案 2 :(得分:0)

您可以在工作线程中使用HTTP或TCP调用,但是这些调用必须是“异步”的。您不得阻塞线程。正如Kamil(向上)所说,您必须将verticle部署为worker,如果您有同步调用,则应使用vertx.executeBlocking(...)。 在这里,您可以获得一些信息:https://developer.mastercard.com/blog/the-vertx-worker-model