我有一个场景需要监控用户的活动。当用户离线时,我得到一个值userOnline:0
,当他回来时,我得到userOnline:1
。
如果用户离线超过5分钟,则管理员用户需要收到有关此消息的通知。所以我的Kstream是:
StreamsBuilder streamsBuilder = new StreamsBuilder();
KStream<String, GenericRecord> user_activities = streamsBuilder.stream("user_activities");
我知道KTable可以应用窗口,我正在尝试在流上应用5分钟的窗口。
KTable<Windowed<String>, Long> aggregateItem =
user_activities
.groupByKey()
.windowedBy(TimeWindows.of(TimeUnit.MINUTES.toMillis(5)))
.count();
从上面的示例中我得到了用户活动的“计数”。但是如何提取用户在离线(userOnline:1
)5分钟后是否没有在线(userOnline:0
)回来?