我有一个始终是一个应用程序,监听 Kafka 流并处理事件。事件是会话的一部分。我需要根据会话数据进行计算。由于我的会话时间长,我在尝试正确运行我的计算时遇到了问题。我 90% 的课程在 5 分钟后完成。99% 在 1 小时后完成。会话可能持续一天以上,由于这是一个实时系统,没有确定的结束。会话是独一无二的,并且显示永远不会发生冲突。
我正在寻找一种可以多次处理窗口的方法,或者使用初始等待期并在此之后处理任何以后的事件,或者每个事件类型结构的纯进程。我需要保留所有以前的事件(ListState),以及以前处理的值(ValueState)。
我以前认为allowedLateness
可以让我这样做,但似乎迟到只在应该处理事件时才考虑,它不会扩展实际的窗口。 GlobalWindows
也可以工作,但我不确定是否有办法多次处理一个窗口。我相信我可以在一段时间不活动后使用evictor
withGlobalWindows
来清除 Windows(尽管我承认,我还没有研究过这个,因为我不确定如何GlobalWindow
多次触发。
任何关于如何实现我想要做的事情的建议将不胜感激,我也很乐意澄清任何需要的点。