【问题标题】:Do we need to close DBCPConnectionPool object in Custom Processor Or Is it handled by Controller Service itself?我们需要关闭自定义处理器中的 DBCPConnectionPool 对象还是由控制器服务本身处理?
【发布时间】:2019-12-07 18:04:06
【问题描述】:

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

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

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

【问题讨论】:

    标签: apache apache-nifi hortonworks-dataflow dbcp


    【解决方案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

    【讨论】:

    • 感谢 Bryan,提供查看现有标准处理器的建议。这有助于消除我的疑虑。
    猜你喜欢
    • 1970-01-01
    • 2022-06-15
    • 2017-06-10
    • 2020-06-02
    • 1970-01-01
    • 1970-01-01
    • 2011-01-27
    • 2020-05-10
    • 1970-01-01
    相关资源
    最近更新 更多