假设我有一个A-Event
KStream聚合到A-Snapshot
KTable和一个B-Event
KStream聚合到B-Snapshot
KTable中。 A-Snapshot
和B-Snapshot
均未传递空值(而是将删除事件汇总为快照的状态属性)。此时,我们可以假设我们有一个持久化的kafka changelog主题和一个A-KTable
和B-KTable
聚合的rocksDB本地存储。然后,我的拓扑将A-KTable
与B-KTable
连接起来,产生一个连接的AB-KStream
。就是说,我的问题在于A-KTable
和B-KTable
的物化生命周期(changelog主题和本地rockdb存储)。假设A-Event
主题和B-Event
主题保留策略设置为2周,是否有办法对kafka内部KTable实现实例保留策略(changelog和RocksDB)与上游事件主题删除保留产生副作用政策?否则,我们是否可以使用某种保留策略来配置KTable实现,以同时管理changelog主题和rockdb存储生命周期?考虑到我无法显式发出A-KTable
和B-KTable
快照逻辑删除?我担心变更日志和本地存储将无限期增长,..
答案 0 :(得分:1)
目前,KStream不支持开箱即用的功能,无法根据源主题保留策略在Changelog主题中注入清除内容。默认情况下,它使用“紧凑”保留策略。
有一个相同的公开JIRA问题: https://issues.apache.org/jira/browse/KAFKA-4212
一种选择是注入墓碑消息,但这不是好方法。
如果是窗口存储,则可以使用“压缩,删除”保留策略。