通过ProcessWindowFunction实现onTimer函数

问题描述

是否可以通过onTimer()而不是ProcessWindowFunction来实现KeyedProcessFunction方法,还是有其他方法可以实现?

我具有此结构,无法更改:

stream.window(EventTimeSessionWindows.withGap(Time.minutes(gapTime))).allowedLateness(Time.minutes(5000))
       .process(new MyProcessFunction());
/*The idea is to use the onTimer method or a similiar method if exist inside MyProcessFunction*/
public class MyProcessFunction extends ProcessWindowFunction<IN,OUT,KEY,W>{}

亲切的问候!

解决方法

ProcessWindowFunction无权使用计时器。它的唯一作用是在窗口的触发器返回FIRE时处理窗口的内容。

触发器可以具有计时器。因此,一种可能的解决方案可能是使用自定义触发器,该触发器使ProcessWindowFunction具有基于时间的附加触发。

在窗口API不够灵活的情况下,另一种解决方案是使用KeyedProcessFunction来实现自己的自定义窗口。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...