首页 > 解决方案 > 为窗口化 kafka 流应用程序重建状态存储时如何忽略旧消息

问题描述

我们正在构建一个 kafka 流应用程序。我们收到关于某个主题的请求和响应消息。每个请求都有一个唯一的 kafka 密钥,响应具有相同的密钥。我们需要将它们配对,使用密钥作为相关性和十分钟的窗口,然后将配对发布到另一个主题上,忽略不匹配的消息。我们有它的工作,但现在已经提出了一个问题。

我们在 Kubernetes 环境中运行,Pod 可能随时关闭或启动。

从操作的角度来看,我们更愿意在 Pod 关闭时丢弃状态存储,并在启动时构建它。

所以我们需要考虑在启动时建立状态存储的时间。应用程序是否需要读取所有旧消息来构建状态存储,或者它是否“聪明”到只读取最后十分钟的那些(因为任何旧消息都不相关)?

如果它不自动执行,我们可以让它以某种聪明的方式跳过旧消息,因为在启动时阅读几个月的旧消息并不理想。

谢谢

标签: apache-kafka-streams

解决方案


推荐阅读