你好,我在卡夫卡会议窗口工作,不活动时间5分钟。我想要某种反馈时,不活动的时间是达到,会议是下垂的关键。让我们假设我
(A,1)
记录'A'是关键的地方。现在,如果我在5分钟内没有得到任何'A'密钥记录,则会话将被删除。
我想在会话结束时做一些操作--假设会话的(value)*2。有什么办法可以使用实现这一点吗?
发布于 2018-03-01 02:19:10
卡夫卡流在间隔时间过去后不会丢弃一个会话。相反,if将创建一个新会话,如果另一个具有相同键的记录在间隙时间过去后到达,并并行地维护两个会话。这允许处理无序数据.这甚至可能发生,两个会话被合并,如果一个无序的数据落入一个空白,并“连接”两个会话彼此。
默认情况下,会话维护时间为1天。您可以通过SessionWindows#until()方法来改变这一点。如果会话到期,它将被静默删除。没有任何通知。您还需要考虑配置参数window.store.change.log.additional.retention.ms。
默认的保留设置是Windows#maintainMs() +1天。可以通过在StreamsConfig.WINDOW_STORE_CHANGE_LOG_ADDITIONAL_RETENTION_MS_CONFIG中指定StreamsConfig来覆盖此设置。
因此,如果时间流逝,您想要做出反应,您应该查看标点符号,这些标点符号允许您根据“偶数时间进度”或挂钟时间注册常规回调(某种类型的计时器)。如果某个会话在一段时间内没有更新,并且您认为它已经“完成”,那么您可以对此做出反应。
https://stackoverflow.com/questions/49024234
复制相似问题