Apache 我们需要关闭自定义处理器中的DBCPConnectionPool对象,还是由控制器服务本身处理?

Apache 我们需要关闭自定义处理器中的DBCPConnectionPool对象,还是由控制器服务本身处理?,apache,apache-nifi,hortonworks-dataflow,dbcp,Apache,Apache Nifi,Hortonworks Dataflow,Dbcp,我创建了一个定制处理器,负责在mysql数据库中保存一些记录。为了设置mysql数据库,我在自定义处理器中使用DBCPConnectionPool对象,它可以正确地将数据保存到数据库表中,但我担心池机制,在保存逻辑完成后,我不会关闭此连接。这适用于2到3个流文件,但当我发送多个流文件时,它是否正常工作 DBCPService dbcpService = context.getProperty(DBCP_SERVICE).asControllerService(DBCPService.class)

我创建了一个定制处理器,负责在mysql数据库中保存一些记录。为了设置mysql数据库,我在自定义处理器中使用DBCPConnectionPool对象,它可以正确地将数据保存到数据库表中,但我担心池机制,在保存逻辑完成后,我不会关闭此连接。这适用于2到3个流文件,但当我发送多个流文件时,它是否正常工作

DBCPService dbcpService = context.getProperty(DBCP_SERVICE).asControllerService(DBCPService.class);
Connection con = dbcpService.getConnection();

我正在寻求澄清,因为我当前的流正常工作,流文件的数量较少

您应该将其返回到池中,最有可能的情况是使用资源进行尝试:

try (final Connection con = dbcpService.getConnection();
     final PreparedStatement st = con.prepareStatement(selectQuery)) {

}
您可以随时查阅标准处理器,了解它们的功能:


感谢Bryan提供查看现有标准处理器的建议。这有助于消除我对此的疑虑。