Wait 2025.5.31.15

捆绑包

org.apache.nifi | nifi-standard-nar

描述

将传入的 FlowFiles 路由到“wait”关系,直到在分布式缓存中识别到一个由相应的 Notify 处理器存储的匹配释放信号。当识别出匹配的释放信号时,处于等待状态的 FlowFile 将路由到“success”关系。并从缓存中移除该释放信号条目。如果相应的 Notify 处理器的属性缓存正则表达式属性配置正确,则释放信号生成的 FlowFile 的属性将复制到等待的 FlowFile 中。如果缓存中有多个由释放信号标识符标识的释放信号,并且Notify 处理器配置为将 FlowFile 的属性复制到缓存,则通过 Wait 处理器的 FlowFile 会在缓存中接收这些释放信号所关联 FlowFiles 的所有属性的并集。如果等待的 FlowFiles 超过过期持续时间,将路由到“expired”关系。如果你需要等待多个信号,请通过目标信号数量属性指定期望的信号数量。这在使用如 SplitText 等将源 FlowFile 拆分成多个片段的处理器时特别有用。为了等待所有片段都被处理完成,可以将“original”关系连接到一个 Wait 处理器,将“splits”关系连接到相应的 Notify 处理器。配置 Notify 和 Wait 处理器,使用“${fragment.identifier}”作为释放信号标识符的值,并将“${fragment.count}”指定为 Wait 处理器中的“Target Signal Count”的值。当将“wait”关系作为循环使用时,建议使用一个优先级排序器(例如先进先出)。

标签

cache、distributed、hold、map、release、signal、wait

输入要求

REQUIRED

支持敏感的动态属性

false

属性

属性

描述

attribute-copy-mode

指定如何处理从进入 Notify 处理器的 FlowFiles 复制的属性

distributed-cache-service

用于从对应的 Notify 处理器检查释放信号的控制器服务。

expiration-duration

表示等待持续时间过后 FlowFiles 将会路由到“expired”关系

releasable-flowfile-count

一个值或属性表达式语言语句的结果,将根据 FlowFile 进行评估,以确定可释放的 FlowFile 数量。这指定定在目标计数达到目标信号计数时可以释放多少个 FlowFiles。零 (0) 具有特殊含义,表示只要信号数量达到目标,就可以释放任意数量的 FlowFiles。

release-signal-id

一个指定特定释放信号缓存的键值。要决定是否应将 Wait 处理器正在处理的 FlowFile 发送到“success”还是“wait”关系,处理器会检查该键指定的缓存中的信号。

signal-counter-name

在缓存中(由释放信号标识符指定),信号可能属于不同的计数器。如果指定了此属性,则处理器将检查缓存中属于该特定计数器的信号数量。如果未指定,则处理器检查缓存中的信号总数。

target-signal-count

缓存中需要达到的信号数量(由释放信号标识符指定),以便将由 Wait 处理器处理的 FlowFile 发送到“success”关系。如果缓存中的信号数量达到此数值,FlowFile 则将路由到“success”关系,并且缓存中的信号数量将减少该值。如果指定了信号计数器名称,则该处理器检查特定的计数器,否则将检查缓存中的信号总数。

wait-buffer-count

指定可用于检查是否能继续处理的最大传入 FlowFiles 数量。缓冲越大,性能越好,因为它通过信号标识符对 FlowFiles 进行分组,从而减少与缓存服务的交互次数。每次处理器执行时只能处理一个信号标识符。

wait-mode

指定如何处理等待通知信号的 FlowFile

wait-penalty-duration

如果配置了此属性,则当某个信号标识符已处理但未满足释放条件时,该标识符会被惩罚。并且在指定时间内,拥有该标识符的 FlowFiles 将不会再次被处理,因此该信号标识符不会阻塞其他标识符的处理。这对于如下场景非常有用:Wait 处理器需要处理多个信号标识符,每个标识符有多个 FlowFiles,且每个标识符内 FlowFiles 的释放顺序很重要。FlowFile 的顺序可通过优先级器进行配置。IMPORTANT:有待处理信号队列数量的限制,Wait 处理器可能无法检查所有队列中的信号标识符。有关最佳实践,请参阅更多详细信息。

关系

名称

描述

expired

超过配置的过期持续时间的 FlowFile 将路由到此关系。

failure

当无法到达缓存,或者释放信号标识符的计算结果为 null 或空时,FlowFiles 将路由到此关系

success

在缓存中找到了匹配释放信号的 FlowFile 将路由到此关系。

wait

在缓存中未找到匹配释放信号的 FlowFile 将路由到此关系。

写入属性

名称

描述

wait.start.timestamp

所有 FlowFiles 文件都将具有“wait.start.timestamp”属性,其值为首次进入该处理器时的纪元时间戳。 这用于判断 FlowFile 是否过期。 当 FlowFile 传输到 failure、expired 或 success 时不会写入此属性。

wait.counter.<counterName>

自上次缓存为空以来,至少出现过一个信号的每个计数器名称,都会作为属性复制到当前的 FlowFile 中。

另请参阅

语言: 中文