1

我有一个 Verticle,它使用来自事件总线的消息并处理它。我有一个关于何时应该关闭 JDBC 连接的问题。有2种方法

  1. 处理完消息后关闭连接。但这将非常昂贵,因为我每次都会打开/关闭连接。

  2. 相信 vertx 将在 verticle 停止/取消部署时关闭连接(实际上永远不会),并且只要连接打开,就不会有任何内存泄漏。我将在 start() 方法中打开连接,以便只要有消息可用。

另一方面,如果我有一个弹性搜索后端,并且我使用的是弹性搜索 SDK,它具有关闭客户端的特定方法,那么应该什么时候真正关闭连接?

4

2 回答 2

1

使用连接池,这将消除关闭/打开连接的大部分成本。使用连接池时,关闭连接会将其返回到连接池以供重复使用。

基本的使用模式是:

try (Connection connection = dataSource.getConnection()) {
  // use connection
}

在块的末尾,连接被关闭,如果dataSource有一个连接池,它将使其可供重用。

于 2019-09-26T16:58:33.130 回答
0

您始终可以将清理代码放在接口的 Stop() 方法中Verticle。当 verticle 启动它的 un-deploy 过程时,它将被调用。

请参阅Vert.x 文档

于 2019-09-26T15:08:57.590 回答