我刚刚开始了解nifi中的自定义处理器。我想了解onTrigger工作的具体情况。我正在使用nifi流处理器界面中定义的属性值在 onTrigger 函数中进行一些操作。
Ex:自定义处理器中的属性值采用以','分隔的字符串,并且在 onTrigger 函数中,我编写了将字符串转换为以下内容的代码的代码:字符串并删除其他空格。
我的问题是,此操作将在流文件每次通过自定义处理器时运行,还是仅转换一次。
我尝试浏览了official开发文档,但是找不到有关此信息
答案 0 :(得分:3)
运行Maven构建以生成NAR文件时,将编译处理器的Java代码。该代码不是由NiFi本身编译的。
然后通过将NAR文件放置在lib目录中将其部署到NiFi实例,然后通过将其添加到画布中来使用该NAR中的组件。
一旦组件在画布上并启动,然后根据调度策略调用onTrigger方法。
onTrigger中的任何代码都将在处理器每次执行时运行,因此您读取属性和拆分值的代码将每次运行。
如果该属性支持流文件中的表达式语言,那么您每次都需要在onTrigger中运行此代码,因为每个流文件的结果值可能不同。
如果该属性不支持流文件中的表达式语言,则可以使用带有@OnScheduled的方法,并将该属性值处理为所需的任何值,并将其存储在处理器的成员变量中,这样就只会发生这种情况一次。