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连线 - 保留输入连线 | 指定当流文件等待通知信号时该如何处理 |
连线:
名字 | 描述 |
---|---|
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