首页 > 解决方案 > NiFi如何使用(Java)通过自定义处理器获取当前处理器名称和处理器组名称

问题描述

我正在使用 Java 创建 NiFi 自定义处理器,其中一个要求是使用 Java 代码获取以前的处理器名称和处理器组(如面包屑)。

标签: apache-nifi

解决方案


以前的处理器名称和进程组名称不能立即(也不意味着)可供处理器使用,您能解释一下您的用例吗?您也许可以使用 SiteToSiteProvenanceReportingTask 将出处信息发送回您自己的 NiFi 实例(例如输入端口)并找到对应于 FlowFiles 进入您的自定义处理器的事件,这些事件应该具有源(前一个)处理器和目标(您的定制)处理器。

相反,如果您使用带有 Groovy 的 InvokeScriptedProcessor 编写自定义处理器,那么您可以“改变规则”并获取以前的处理器名称等,因为 Groovy 允许访问私有成员,并且您可以假设 ProcessContext 的实现onTrigger是的一个实例StandardProcessContext,因此您可以获取它的成员,其中包括上游连接以及前一个处理器。不过,对于特定的 FlowFile,我不确定您是否可以使用这种方法来了解它来自哪个上游处理器。

或者,您可以在每个“前一个处理器”之后添加一个 UpdateAttribute,以使用有关该处理器的信息设置属性,但这必须进行硬编码并应用于流程的每个相应部分。


推荐阅读