Apache kafka 清理更改日志主题备份会话窗口

Apache kafka 清理更改日志主题备份会话窗口,apache-kafka,apache-kafka-streams,Apache Kafka,Apache Kafka Streams,我们正在使用以下代码在会话窗口中聚合: .windowedBy(SessionWindows.with(...)) .aggregate(..., ..., ...) 自动为我们创建的状态存储由带有cleanup.policy=compact的变更日志主题支持 在重新部署拓扑时,我们发现恢复状态存储所花费的时间比预期的要长(10分钟以上)。解释似乎是,即使会话已关闭,它仍然存在于变更日志主题中 我们注意到会话窗口的默认维护持续时间为一天,但即使超过了非活动+维护持续时间,也不会从变更日志主题中

我们正在使用以下代码在会话窗口中聚合:

.windowedBy(SessionWindows.with(...))
.aggregate(..., ..., ...)
自动为我们创建的状态存储由带有
cleanup.policy=compact
的变更日志主题支持

在重新部署拓扑时,我们发现恢复状态存储所花费的时间比预期的要长(10分钟以上)。解释似乎是,即使会话已关闭,它仍然存在于变更日志主题中

我们注意到会话窗口的默认维护持续时间为一天,但即使超过了非活动+维护持续时间,也不会从变更日志主题中删除消息

a) 我们是否需要手动删除“old”(根据我们的定义)消息以控制变更日志主题的大小?(这可能是[1]所暗示的情况。)

b) 有没有可能用
cleanup.policy=compact,delete
创建changelog主题,这样做有意义吗


[1] Kafka Stream的
UnwindowedChangelogTopicConfig
(而不是
WindowedChangelogTopicConfig
)似乎在内部创建了一个会话存储区,这可能会导致以下相关评论:“对于非窗口存储,没有保留策略。仅压缩基础主题。因此,如果您知道不再需要记录,则需要通过墓碑将其删除。但要做到这一点有点难Matthias J.Sax于2017年6月27日22:07“

您遇到了一个错误。我刚刚为此创建了一张罚单:


我建议您手动修改主题配置,以解决部署中的问题。

感谢您澄清这一问题,并感谢您(以及团队)在Kafka Streams上所做的出色工作。