我有一个Verticle,它使用事件总线中的消息并对其进行处理。我有一个关于何时应关闭JDBC连接的问题。有两种方法
在处理完消息后即关闭连接。但这会非常昂贵,因为我每次都会打开/关闭连接。
请相信,当顶点停止/取消部署时,vertx将关闭连接(实际上从不),只要连接打开,就不会有任何内存泄漏。我将在start()方法中打开连接,以便每当有消息可用时。
另一方面,如果我有一个弹性搜索后端,并且使用的是弹性搜索SDK,该SDK具有关闭客户端的特定方法,那么什么时候才应该真正关闭连接?
答案 0 :(得分:0)
您始终可以将清理代码放在Verticle
接口的Stop()方法中。顶点启动时,它将被取消部署过程。
请参见Vert.x Docs
答案 1 :(得分:0)
使用连接池,这将消除关闭/打开连接的大部分费用。使用连接池时,关闭连接会将其返回到连接池以重新使用。
基本用法是:
try (Connection connection = dataSource.getConnection()) {
// use connection
}
在该块的末尾,连接被关闭,如果dataSource
有一个连接池,则连接将重新使用。