Nifi:在自定义处理器中读取外部属性

时间:2018-09-07 22:38:31

标签: apache-nifi

我已经更新了变量注册表以指向自定义属性文件,并且能够使用表达式语言在处理器中读取这些内容而没有任何问题。

我怎么想在我的自定义处理器(扩展AbstractProcessor)的onTrigger()中读取它们

我尝试了flowFile.getAttributes()和context.getAllProperties(),但是没有被捡起来。

感谢所有输入。

谢谢

1 个答案:

答案 0 :(得分:2)

为澄清起见,您想在CustomProcessor#onTrigger()方法的应用程序逻辑中引用这些外部定义的变量的值吗?

您可以:

  1. 通过查询NiFiProperties#getVariableRegistryProperties()NiFiProperties#getVariableRegistryPropertiesPaths来加载变量定义。引用了变量定义后,就可以根据需要解析和使用它们。
  2. 您可以通过流文件属性或处理器属性 来引用它们,前提是这些属性或属性支持“表达式语言”,并且其作用域已适当调整。 PropertyDescriptor将列出expressionLanguageSupported()并返回一个ExpressionLanguageScope,它是由enumNONEVARIABLE_REGISTRY组成的FLOWFILE_ATTRIBUTES (其中还包括VR)。

我不了解您希望代码加载流程管理员无法控制的自定义变量的情况,该变量将通过处理器属性或flowfile属性进行填充。如果确实需要访问上下文或流程文件不提供的自定义变量,则可以使用上面的选项1,但理论上也可以将这些变量存储在环境变量,系统属性等中。