能力说明
能力名称:延迟等待
功能简介
对数据流进行一定时间的延迟等待,可用于限制下游数据流速或为等待末某一事件结束而设置定时开启数据流的情境
配置参数
| 参数名称 | 参数类型 | 是否必填 | 默认值 | 参数说明 |
|---|---|---|---|---|
| 等待模式 | 文本 | 是 | 水闸模式 | 延迟等待模式,详见下文 |
| 等待毫秒数 | 数字 | 是 | 1000 | 等待毫秒数(在定时水闸模式中代表水闸开放的时长) |
| 定时水闸专用--开闸时间cron表达式 | 文本 | 否 | 0 */5 * * * ? | 定时水闸模式开闸起始时间,使用cron表达式,格式为‘秒 分 时 日 月 周‘ |
能力提供五种等待模式:
水闸模式:能力启动后,等待指定时间(等待毫秒数参数)后,开放水闸,将能力上游堆积的数据立刻流向下游
排队模式:所有上游数据排成一列纵队,每条数据依次在此能力等待指定毫秒数后,将能力上游堆积的数据立刻流向下游
- 并行模式:所有上游数据排成N列纵队,每队的数据依次在此能力等待指定毫秒数后,将能力上游堆积的数据立刻流向下游 (并行模式需要改动能力并发数,N=并发数,如果您不能改动此值,则所有能力都是单线程的,请忽略并行模式) (并行模式使用时请尽量避免等待毫秒数和并发数都很大的情况,会造成占用nifi线程过多无法处理其他能力请求的情况)
- 快速并行模式:每条数据进入本能力的上游输入队列的时刻起计时,到达制定毫秒数后,将该数据流向下游 (快速并行模式 仅单线程即可运行,数据流速也更快,可替换并行模式) (快速并行模式缺点:如长期停止能力后再开启,上游堆积数据可能会快速流过本能力,因为等待毫秒数的 "计时" 是从这些数据进入队列就开始的)
- 定时水闸模式:根据cron表达式确定开闸时间,每次开闸时长为“等待毫秒数”的值,在开闸期间上游堆积数据将立刻流向下游,闭闸期间则不允许数据通过 (定时水闸模式如果写错cron表达式,或者开闸时间间隔短于“等待毫秒数”,即设置错误造成永久开闸,将报错,请及时修改设置) (cron表达式不会写的请参考:https://blog.csdn.net/u012060033/article/details/99320136)
注意:使用此能力前,请确保上游队列容量足够,因为所有数据延迟等待时,会堆积在上游队列中
输入简介
任何上游数据
输出简介
数据原样输出
更新内容
2024年4月15日
- 新增了快速并行模式和定时水闸模式
- 修正了排队模式的bug:当画布上有多个本能力同时等待时,可能会出现等待时间超长的问题。
- 优化了原有三个模式的等待机制,降低了线程占用,避免设置多并发时的系统卡顿或能力停不下来的情况。 注意:并行模式基于其原理,仍不建议设置过多并发(不要超过50,能力过多时更要降低),有需要可以用两个新模式替代。