- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
DBCPConnectionPool Service
需要5个连接参数来建立与数据库的连接,如下图所示[标记为黄色]
我使用UpdateAttribute Processor
手动添加这5个连接参数,并给它们各自的值,如下图所示[标记为黄色]
现在,当我尝试通过这些属性读取DBCPConnectionPool Service
中的连接参数值时(如下图所示),我无法读取它们。
要了解DBCPConnectionPool Service
无法读取Flowfile属性的原因,我继续检查DBCPConnectionPool Service
和更新属性处理器
。
UpdateAttribute Processor 的源代码:
因此,我知道了无法从 FlowFile 属性中读取值的原因。这是因为 ExpressionLanguageScope
仅限于 VARIABLE_REGISTRY
而不是 FLOWFILE_ATTRIBUTES
。
现在,我的问题是为什么 DBCPConnectionPool Service
的 ExpressionLanguageScope
仅限于 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/
我是一名优秀的程序员,十分优秀!