Ris*_*sad 2 apache minify hortonworks-data-platform apache-nifi hortonworks-dataflow
所述DBCPConnectionPool Service要求5的连接参数来建立到数据库的连接如图所示在下面的图片 [标记为黄色]

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

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

要知道之所以DBCPConnectionPool Service无法读取Flowfile属性,我继续检查两个源代码DBCPConnectionPool Service和UpdateAttribute Processor.
Souce代码DBCPConnectionPool Service:

Souce代码UpdateAttribute Processor:

因此,我开始知道它无法从FlowFile属性中读取值的原因.这是因为ExpressionLanguageScope它受到限制VARIABLE_REGISTRY而不受限制FLOWFILE_ATTRIBUTES.
现在,我的问题是,为什么ExpressionLanguageScope对DBCPConnectionPool Service被限制为VARIABLE_REGISTRY.这种限制的原因是什么?我问这个问题的原因是因为我想通过FlowFile属性读取连接参数的值.
对于在NiFi开发邮件列表中提出的相同问题,Andy以尽可能最好的方式回答了问题.为什么的原因DBCPConnectionPool与此有关的服务或任何控制器服务,采用ExpressionLanguageScope.VARIABLE_REGISTRY的是,控制器服务有没有到flowfiles访问,所以它不会读flowfiles'属性.对于这个问题,为什么它只支持VARIABLE_REGISTRY:
VARIABLE_REGISTRY引入的一个主要原因是避免暴露敏感值,这是我们传递诸如flowfile属性之类的值时的情况.控制器服务适合这种情况,因为它们中的许多都使用敏感属性Password.如果你假设你可以让它只是改变这些属性的范围ExpressionLanguageScope.FLOWFILE_ATTRIBUTES,你就错了.更改它们是没有意义的,也不起作用,原因是控制器服务再也无法访问流文件.
如果您有特定的要求,您需要为不同的流文件使用不同的属性值,原始开发线程中的Andy共享了一些我再次发布的链接:
| 归档时间: |
|
| 查看次数: |
190 次 |
| 最近记录: |