Skip to main content

Wait

描述:

直到Notify组件提供匹配的某个相应释放信号,将原输入的数据流输出到"wait"连线上。当识别出一个匹配的释放信号时,等待的数据流将被输出到“success”连线,并且会复制Notify组件生成释放信号的数据流中的属性,然后从缓存中删除释放信号。如果等待的流文件超过了过期时间,数据流则输出到“expired”连线。如果需要等待多个信号,请通过“目标信号计数”属性指定所需的信号数量。对于将源流文件分割为多个片段(如SplitText)的组件来说,这特别有用。为了等待所有片段都被处理,可以将“original”连线连接到Wait组件,将“split”连线连接到相应的Notify组件。配置Notify和Wait组件的"释放信号标识符(Release Signal Identifier)"的值为'${fragment.identifier}',指定Wait组件"目标信号值"属性的值为${fragment.count}'。当使用“wait”连线循环时,建议使用优先排序(例如,先入先出)。

标签:

map, cache, wait, hold, distributed, signal, release, 信号, 等待

参数:

如下列表中,必填参数则标识为加粗. 其他未加粗参数,则表示为可选参数。表中同时提到参数默认值设置, 并且 参数还支持 表达式语言.

名字默认值允许值列表描述
信号释放标识符一个值或者根据属性表达式计算数据流的结果值,该值用来确定释放信号缓存键值

支持表达式语言 (支持流属性和变量)
目标信号计数1一个值或者根据属性表达式计算数据流的结果值,该值用来确定目标信号值的大小。该组件检查信号计数是否达到这个数字。如果指定了信号计数器名称,该组件将检查特定的计数器,否则将检查信号的总数。

支持表达式语言 (支持流属性和变量)
信号计数器名称一个值或者根据属性表达式计算数据流的结果值,该值用来确定信号计数器名称。如果没有指定,该组件将检查信号的总数。

支持表达式语言 (支持流属性和变量)
等待缓存计数1指定检查输入流文件是否可以向前流动时,可以缓存的流文件的最大数量。更多的缓存量可以提供更好的性能,因为它会按信号标识符分组信号,以减少跟缓存服务的交互次数。在组件执行时只能处理一个信号标识符。
可释放的数据流计数1一个值或者根据属性表达式计算数据流的结果值,该值用来确定可释放的流文件个数。这指定当目标计数值达到了目标信号计数时,可以释放多少个流文件。0有一个特殊的含义,当信号数与目标匹配,会释放所有的流文件。

支持表达式语言 (支持流属性和变量)
过期时间10 min指定多长时间后,等待中的数据流会输出到“expired”连线。
缓存服务控制器服务API:
AtomicDistributedMapCacheClient
实现:
CouchbaseMapCacheClient
DistributedMapCacheClientService
用来检查协同组件Notify释放信号的控制器服务
拷贝属性模式保持原始
- 替换已存在当缓存的属性被复制到释放的数据流上时,它们会替换任何相同的属性。
- 保持原始释放的数据流上的属性不会被复制的缓存属性覆盖。
指定如何处理从输入Notify组件的数据流中复制的属性
等待模式输出到wait连线
- 输出到wait连线当释放信号还没有通知时,将数据流输出到“wait”连线。将数据流输出到wait连线,这种模式允许把输入流文件加入队列缓存起来,建议在“wait”连线上设置一个优先排序器(例如,先入先出)。
- 保留输入连线当释放信号还没有通知时,将数据流传送到其来源的上游连接中。这种模式能保持上游连接是满的,这样上游源组件就会由于背压机制的存在而不会被调度运行,并限制输入的流文件数目。
指定当流文件等待通知信号时该如何处理

连线:

名字描述
expired等待过期超过后,数据流将输出到此连线
success与缓存中释放信号相匹配后,数据流输出到此连线
wait没有与缓存中释放信号相匹配,数据流输出到此连线
failure当缓存不可用,或释放信号标识符的值为null或空时,数据流输出到此连线。

读取属性:

未提供。

写入属性:

名字描述
wait.start.timestamp所有的数据流都有一个'wait.start.timestamp'属性,它设置了流文件第一次进入此组件时的初始时间戳。这用于确定F数据流的过期时间。
wait.counter.<counterName>If a signal exists when the processor runs, each count value in the signal is copied.

状态管理:

该组件不保存状态。

限制:

该组件没有限制

输入流要求:

组件必须提供输入流。

系统资源考量:

未提供。

参考:

DistributedMapCacheClientService, DistributedMapCacheServer, Notify