【发布时间】:2020-08-19 18:14:21
【问题描述】:
我正在使用 Java 创建 NiFi 自定义处理器, 其中一项要求是使用 java 代码获取先前的处理器名称和处理器组(如面包屑)。
【问题讨论】:
标签: apache-nifi
我正在使用 Java 创建 NiFi 自定义处理器, 其中一项要求是使用 java 代码获取先前的处理器名称和处理器组(如面包屑)。
【问题讨论】:
标签: apache-nifi
之前的处理器名称和进程组名称不会立即(也不意味着)可供处理器使用,您能否详细解释一下您的用例?您也许可以使用 SiteToSiteProvenanceReportingTask 将出处信息发送回您自己的 NiFi 实例(例如输入端口)并找到对应于 FlowFiles 进入您的自定义处理器的事件,这些事件应该具有源(前一个)处理器和目标(您的自定义)处理器。
如果您使用带有 Groovy 的 InvokeScriptedProcessor 编写自定义处理器,那么您可以“改变规则”并获取以前的处理器名称等,因为 Groovy 允许访问私有成员并且您可以假设实现onTrigger 中的 ProcessContext 是 StandardProcessContext 的一个实例,因此您可以获取它的成员,其中包括上游连接以及前一个处理器。不过,对于特定的 FlowFile,我不确定您是否可以使用这种方法来了解它来自哪个上游处理器。
或者,您可以在每个“前一个处理器”之后添加一个 UpdateAttribute,以使用有关该处理器的信息设置属性,但这必须进行硬编码并应用于流程的每个相应部分。
【讨论】:
filename。
head 将对来自ls、cat 等的数据进行操作,无论来源如何。 FBP 的目的是将这些组件相互解耦,并消除它们之间的依赖关系。
我前段时间遇到过这个问题。我使用InvokeHTTP 处理器并使用nifi-api/process-groups/${process_group_id} Web Service
这就是我的实现方式:
InvokeHTTP 处理器并将HTTP Method 设置为GET
Remote URL 设置为http://{nifi-instance}:{port}/nifi-api/process-groups/${action_group_process_group_id}
如果您需要我正在使用的 XML 文件,请告诉我。我可以分享。它对我来说很好用
【讨论】: