在NiFi拓扑中收集用户输入的方法

时间:2017-06-16 18:54:25

标签: apache-nifi

我是NiFi的新手,所以我不确定这是否可行(或正确的设计方法):

我正在尝试创建一个处理管道,其中NiFi获取一个文件(可能多GB 大小)并执行一些处理 - 非常简单直到......

需要向最终用户显示结果数据的一小部分。用户将提供输入,然后NiFi将需要执行原始数据集的后续处理。

我打算使用Wait处理器,使用PostHTTP处理器提示用户(通过GUI),然后使用Notify处理器。流程如下:

FetchFile ==> Initial Processing ==> Wait

  • 提示用户输入(通过PostHTTP处理器)
  • 接收用户输入(通过ListenHTTP处理器)

Notify ==> Follow-on Processing

不幸的是,PostHTTP处理器将FlowFile内容的所有发布到指定的端点......再次,可能多个千兆字节大小......这是令人望而却步的。

是否有一个独立的"这种用户交互的NiFi处理器(不包含FlowFile内容)?这个用例是否有另一种实施策略?或者这甚至不是NiFi的正确应用?

谢谢!

1 个答案:

答案 0 :(得分:2)

一种可能的方法是将文件写入临时存储(本地磁盘,HDFS,S3等),写入用户操作请求,并完全退出NiFi。然后在用户采取行动后重新启动流程。要触发重启,您可以将UI发布到NiFi,写入消息队列,或将另一个文件写入NiFi正在轮询的目录。

我认为这对于管理用户交互会更灵活,因为您不必在HTTP后期循环中完成整个UI响应。