正好生成 1 个 Flowfile

问题描述

我在 Apache Nifi 中使用 GenerateFlowFile 处理器 - 当我激活它时,我希望处理器准确创建 1 Flowfile。

现在我通过 Python 使用 REST API 将状态更改为 RUNNING,等待 0.5 秒并将状态更改为 STOPPED。这导致 1 FlowFile 被添加到下一个处理器的队列中。

我测试了一下,等待 1.5 秒给我 2 FlowFiles,2.5 秒给我 3 FlowFiles - 我猜处理器每个生成一个 Flowfile第二个它正在运行。

我怎样才能确保准确地生成1 Flowfile? 上述方法显然依赖于网络连接和往返时间。最坏的情况:在我等待时连接断开,我无法再停止处理器,并且正在生成 x Flowfiles。

我目前的配置是:

设置:

Yield duration: 1 sec
Penalty Duration: 30sec
Bulletin Level: WARN

调度:

Scheduling Strategy: CRON driven 
Concurrent Tasks: 1 
Run Schedule: * * * * * ?
Execution: All nodes
Run duration: 0ms 

属性

File Size: 0B
Batch Size: 1
Data Format: Text
Unique FlowFiles: false
Custom Text: No value set
Character Set: UTF-8
Mime Type: No value set

解决方法

您只想将 GenerateFlowFile 标记为主节点(假设您有 1 个以上的节点),以确保每个节点不会生成自己的 FlowFile。

将调度设置为计时器并将运行时间表调整为 604800(1 周)之类的时间 - 这意味着即使您让处理器运行,它也只会每周运行一次 - 这应该会给您足够的时间如果您的脚本无法连接以告诉处理器停止,则修复连接问题。

将并发保持在 1。