访问队列属性?

时间:2016-12-27 19:25:03

标签: apache-nifi

我有许多GenerateTableFetch处理器,它们将Flowfiles发送到下游的UpdateAttributes处理器。从UpdateAttributes,Flowfile传递给ExecuteSQL处理器:

enter image description here

是否有任何方法可以将某个属性添加到队列中的流文件中,并将该文件放在队列中?例如,在我重置/清除GenerateTableFetch的状态后,我想知道这是否是来自GenerateTableFetch的第一批Flowfiles。我可以在队列中看到FlowFile的位置,但是我可以将其添加为传递到下游的属性。这可能吗?

enter image description here

1 个答案:

答案 0 :(得分:1)

这不是Apache NiFi中的可用功能。队列中流文件的位置是动态的,并且会随着流文件从队列中删除(通过下游处理或流文件到期)而更改。

如果您只是在添加特定流文件之前尝试确定队列是否为空,那么此时您的最佳解决方案可能是使用ExecuteScript处理器通过REST API获取所需的连接,然后使用FlowFileQueue#isActiveQueueEmpty()来确定指定的队列当前是否为空,并向流文件添加一个布尔属性,表明它是"批处理中的第一个"或者你想要应用的任何逻辑。

"批次"并不是一个真正的NiFi概念。您是否希望采用"第一个" flowfile?也许还有其他逻辑(即ExecuteSQL处理器在x秒内没有对流文件进行操作等),这可能会触发您想要的行为。