首页 > 解决方案 > 恰好生成 1 个流文件

问题描述

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

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

我测试了一下,等待1.5几秒钟给了我2FlowFiles,2.5几秒钟给了我3FlowFiles - 我猜处理器每运行一秒就会生成一个 Flowfile。

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

我目前的配置是:

设置:

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

标签: apache-nififlowfile

解决方案


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

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

保持并发为 1。


推荐阅读