我有一个总是一个应用程序,监听Kafka流,并处理事件。事件是会话的一部分。我需要根据会话数据进行计算。我遇到了一个问题,试图正确运行我的计算,由于我的会话长度。我90%的疗程都在5分钟后完成。99%在1小时后完成。会话可能持续一天以上,由于这是一个实时系统,因此没有确定的结束时间。会话是唯一的,显示从不冲突。
我正在寻找一种方法,可以多次处理一个窗口,可以使用一个初始等待期并处理其后的任何事件,也可以使用一个纯进程/事件类型结构。我需要保留所有以前的事件(liststate),以及以前处理过的值(valuestate)。
我以前以为 allowedLateness
允许我这样做,但似乎迟到只考虑到应该处理事件的时间,它没有扩展实际的窗口。 GlobalWindows
也可以工作,但我不确定是否有办法处理一个窗口多次。我相信我可以用 evictor
与 GlobalWindows
在一段时间的不活动后清除窗口(尽管我承认,我还没有研究这个问题,因为我不确定如何触发 GlobalWindow
多次。
任何关于如何实现我期待做的建议将不胜感激,我也很乐意澄清任何需要的要点。
1条答案
按热度按时间rm5edbpk1#
如果
SessionWindows
如果你做不到,那你可以用GlobalWindows
有一个习惯Trigger
以及Evictor
. 触发器接口有一个基于元素和计时器的回调,可以随时触发。如果您沿着这条路线走下去,那么是的,您还需要实现一个逐出器,以便在不再需要元素时对其进行处理。文档和源代码有助于理解这一切是如何结合在一起的。