apache-nifi - NiFi如何使用(Java)通过自定义处理器获取当前处理器名称和处理器组名称
问题描述
我正在使用 Java 创建 NiFi 自定义处理器,其中一个要求是使用 Java 代码获取以前的处理器名称和处理器组(如面包屑)。
解决方案
以前的处理器名称和进程组名称不能立即(也不意味着)可供处理器使用,您能解释一下您的用例吗?您也许可以使用 SiteToSiteProvenanceReportingTask 将出处信息发送回您自己的 NiFi 实例(例如输入端口)并找到对应于 FlowFiles 进入您的自定义处理器的事件,这些事件应该具有源(前一个)处理器和目标(您的定制)处理器。
相反,如果您使用带有 Groovy 的 InvokeScriptedProcessor 编写自定义处理器,那么您可以“改变规则”并获取以前的处理器名称等,因为 Groovy 允许访问私有成员,并且您可以假设 ProcessContext 的实现onTrigger
是的一个实例StandardProcessContext
,因此您可以获取它的成员,其中包括上游连接以及前一个处理器。不过,对于特定的 FlowFile,我不确定您是否可以使用这种方法来了解它来自哪个上游处理器。
或者,您可以在每个“前一个处理器”之后添加一个 UpdateAttribute,以使用有关该处理器的信息设置属性,但这必须进行硬编码并应用于流程的每个相应部分。
推荐阅读
- sql - 使用 Oracle SQL 从一个表插入另一个表时如何避免重复行?
- docker - Vuejs 到 Github Actions 中的 docker 容器
- pdf - 在最后一页显示页脚
- python - 运行蜘蛛爬行时 -o 是什么意思?
- javascript - Vue 3:使用 Vue Material 时收到“r.default 不是构造函数”错误
- firebase - 如何在颤动的轮播滑块中从firebase中删除图像之间的加载时间
- c# - 序列化列表
protobuf-net 的成员 - python - 使用其相关方法时如何覆盖固有属性?
- java - Tapestry `EntityManager` 与 `EntityManagerManager`
- angular - Angular 9 - 打字稿 - headers.set - 不添加标题