0

我在 Vert.x 的手册中找到了下面这句话。

Worker Verticle 也不允许使用 TCP 或 HTTP 客户端或服务器。

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

那么我不能在worker Verticle中使用JDBC阻塞调用?

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

4

3 回答 3

1

不,您不能在 Verticle 中使用阻塞 JDBC 调用。有一个JDBC 持久化模块,它使用工作队列模块在多个处理器之间共享负载

Vert.x 2.0 将允许在模块中使用线程,因此这应该不会成为问题

于 2013-02-13T08:58:57.327 回答
0

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

于 2019-02-14T13:11:39.747 回答
0

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

vertx.executeBlocking(...)

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

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

于 2019-02-06T13:15:23.723 回答