gpt4 book ai didi

apache - 为什么 DBCPConnectionPool 服务中的 ExpressionLanguageScope 仅限于 'VARIABLE_REGISTRY' 而不是 ' FLOWFILE_ATTRIBUTES' ?

转载 作者:行者123 更新时间:2023-12-02 09:13:50 25 4
gpt4 key购买 nike

DBCPConnectionPool Service需要5个连接参数来建立与数据库的连接,如下图所示[标记为黄色] enter image description here

我使用UpdateAttribute Processor手动添加这5个连接参数,并给它们各自的值,如下图所示[标记为黄色] enter image description here

现在,当我尝试通过这些属性读取DBCPConnectionPool Service中的连接参数值时(如下图所示),我无法读取它们。 enter image description here

要了解DBCPConnectionPool Service无法读取Flowfile属性的原因,我继续检查DBCPConnectionPool Service更新属性处理器

https://github.com/apache/nifi/blob/master/nifi-nar-bundles/nifi-standard-services/nifi-dbcp-service-bundle/nifi-dbcp-service/src/main/java/org/apache/nifi/dbcp/DBCPConnectionPool.java

https://github.com/apache/nifi/blob/master/nifi-nar-bundles/nifi-update-attribute-bundle/nifi-update-attribute-processor/src/main/java/org/apache/nifi/processors/attributes/UpdateAttribute.java

DBCPConnectionPool 服务的源代码: enter image description here

UpdateAttribute Processor 的源代码: enter image description here

因此,我知道了无法从 FlowFile 属性中读取值的原因。这是因为 ExpressionLanguageScope 仅限于 VARIABLE_REGISTRY 而不是 FLOWFILE_ATTRIBUTES

现在,我的问题是为什么 DBCPConnectionPool ServiceExpressionLanguageScope 仅限于 VARIABLE_REGISTRY。造成这种限制的原因是什么?我之所以问这个问题是因为我想通过FlowFile属性读取连接参数的值。

最佳答案

对于 NiFi dev mailing list 中提出的相同问题,安迪已经用最好的方式回答了。 DBCPConnectionPool 服务或任何 Controller 服务使用 ExpressionLanguageScope.VARIABLE_REGISTRY 的原因是, Controller 服务没有访问流文件所以它不会读取流文件的属性。对于这个问题,为什么它只支持 VARIABLE_REGISTRY 是:

  • 仅仅因为它不读取流文件属性并不意味着它不应该使用其他地方的属性。
  • 引入 VARIABLE_REGISTRY 的主要原因之一是避免暴露敏感值,当我们将此类值作为流文件属性传递时就会出现这种情况。 Controller 服务适合这种情况,因为它们中的许多服务都使用敏感属性,例如密码

如果您认为只需将这些属性的范围更改为 ExpressionLanguageScope.FLOWFILE_ATTRIBUTES 即可使其正常工作,那么您就错了。更改它们没有意义,也不起作用,原因又是 Controller 服务永远无法访问流文件。

如果您有特定要求,其中您需要对不同的流程文件使用不同的属性值,Andy 在原始开发线程中共享了一些我再次发布的链接:

关于apache - 为什么 DBCPConnectionPool 服务中的 ExpressionLanguageScope 仅限于 'VARIABLE_REGISTRY' 而不是 ' FLOWFILE_ATTRIBUTES' ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49793689/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com