Apache nifi 如何使从ListFile processor接收的流文件等待其中一个特定流文件(如果存在)的处理完成?

Apache nifi 如何使从ListFile processor接收的流文件等待其中一个特定流文件(如果存在)的处理完成?,apache-nifi,wait,notify,Apache Nifi,Wait,Notify,假设我有一个包含多个文件的目录。我想列出目录,获取所有文件并处理它们。但是如果有一个具有特定文件名(例如file.txt)的流文件,那么我想在处理任何其他流文件之前先处理这个流文件。请注意,由于我的用例限制,我无法再次列出该目录。它必须在单个流中。您可以从类似于下面的流的内容开始。使用Wait Notify实现门式机制。但是我觉得,,要按预期执行此操作,您需要为ListFile设置运行计划,并且执行间隔应大于等待处理器的过期时间,这样,如果执行尝试列表中不存在特定文件,则仍将在下次执行ListF

假设我有一个包含多个文件的目录。我想列出目录,获取所有文件并处理它们。但是如果有一个具有特定文件名(例如file.txt)的流文件,那么我想在处理任何其他流文件之前先处理这个流文件。请注意,由于我的用例限制,我无法再次列出该目录。它必须在单个流中。

您可以从类似于下面的流的内容开始。使用
Wait Notify
实现门式机制。但是我觉得,,要按预期执行此操作,您需要为ListFile设置
运行计划
,并且执行间隔应大于
等待
处理器的过期时间,这样,如果执行尝试列表中不存在特定文件,则仍将在下次执行ListFile之前处理这些文件,并且不会被删除卡在
等待
处理器队列


您正在使用NiFi处理批处理过程,这并不是它的设计目的,但仍然是可能的。您可以有一个合并,它等待X个时间将所有文件名添加到单个流文件中。然后,最简单的方法可能是使用一个脚本,通过名称匹配“file.txt”,并首先将其作为自己的流文件发送出去,然后发送其他文件-进入获取。您需要在主节点上运行它,所有处理器上都有1个线程,以确保它保持顺序。但这不是很好的练习。