2017-03-31 54 views
1

我目前使用kafka流来整理窗口内的相关事件。如果所有相关事件都没有到达窗口内,卡夫卡流中是否有方法可以处理已过期的事件。这将有助于处理/通知下游应用程序所有相关事件未到达整理。感谢您的回应。
以下是在示例
例-1:
- 的GroupID:G1
- 事件到来:E1,10am; E2 10:01 am和E3 10:02 am
- 窗口:不活动持续时间为5分钟的会话窗口。
- 结果:所有事件均已成功整理。Kafka Streams:处理窗口过期流中的事件老化

实例-2:
- 活动到达:E1,10am; E2上午10:01和E3不到达
- 窗口:不活动持续时间为5分钟的会话窗口。
- 结果:触发一个动作或通过用于在窗口届满E1和E2部分 归类的听众得到通知,在上午10时06

+0

这个问题有点不清楚。您是否问过“卡夫卡流中有没有办法处理已过期的事件?” – Nathan

+0

是的,有没有办法获得窗口开启事件的处理。 – vinay

回答

1

的Windows卡夫卡流“不会过期”,但保持开放,允许处理迟到数据。

比较How to send final kafka-streams aggregation result of a time windowed KTable?

这是不可能注册任何回调,

  • 不是的情况下“流时间”的进展,并通过“窗口结束时间”
  • 没有为案件如果最后下降的窗口(即保留期限过去了)
+0

感谢马特的回应。是否有另一种方式通过Kafka Streaming库或者通过交互式查询在下列情况下识别事件:a)当窗口被丢弃时b)当窗口时间过去时。 – vinay

+0

你可以使用一个虚拟'transformValues'来转发它的输入数据并注册一个标点符号 - 标点符号是基于内部跟踪的“流时间”,因此你可以计算出时间是否超过了窗口结束时间 - 如果你考虑保留时间,你也可以计算出Windows何时最终被丢弃。因此,你可以像这样通过IQ间接访问当前窗口内容 - 但这很不方便,也不是100%准确。 –

+0

@kaf在Kafka中的窗口当窗口的“过期”/定义“直到”时间过去并且状态存储最终放弃窗口时,流确实会过期。所以窗口不过期的概念是错误的。从所有SO问题和论坛主题询问这个问题,我很清楚这是一个疏忽和缺失的功能。数据并没有永远在会话商店中生存,我们想知道它的价值是什么以及何时到期。 – akizl