NiFi如何使用(Java)通过自定义处理器获取当前处理器名称和处理器组名称

时间:2020-08-19 18:14:21

标签: apache-nifi

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

2 个答案:

答案 0 :(得分:1)

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

例如,如果改为使用带有Groovy的InvokeScriptedProcessor对自定义处理器进行编码,则可以“弯曲规则”并获得先前的处理器名称,例如,因为Groovy允许访问私有成员,并且可以假定实现了onTrigger中的ProcessContext是StandardProcessContext的实例,因此您可以获取其成员,这些成员包括上游连接,因此包括前一个处理器。不过,对于特定的FlowFile,我不确定您是否可以使用这种方法来知道它来自哪个上游处理器。

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

答案 1 :(得分:0)

一段时间以前我面对这个。我使用InvokeHTTP处理器和nifi-api/process-groups/${process_group_id} Web服务

这就是我的实现方式:

  1. 标识应在其中进行错误处理的过程组。 [行动小组]
  2. 在操作组旁边创建一个新的流程组[错误处理组],并添加关系以将文件传输到错误处理组。
  3. 使用InvokeHTTP处理器并将HTTP Method设置为GET
  4. Remote URL设置为http://{nifi-instance}:{port}/nifi-api/process-groups/${action_group_process_group_id}
  5. 您将获得JSON响应,您必须根据需要对其进行自定义

如果您需要我使用的XML文件,请告诉我。我可以分享。对我来说很好

相关问题