1

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

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

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

4

1 回答 1

1

您应该将它返回到池中,很可能使用 try-with-resource:

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

}

您可以随时咨询标准处理器以了解它们的作用:

https://github.com/apache/nifi/blob/master/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/ AbstractExecuteSQL.java#L223

于 2019-07-30T14:35:45.003 回答