我使用的是Apache Kafkaka_2.13版本。根据我们的要求,我们正在聚合(对一些数据字段进行算术运算(传入流数据,并同时存储多个窗口(每小时、每天、每周、每月、始终打开窗口(的最终聚合结果。然而,我们根本不希望任何窗口过期。例如,我应该能够看到一年前创建的Hourly窗口的聚合结果。
因此,基本上,我们不希望*-changelog(例如,每小时更改日志、每月更改日志等主题(主题随时清除旧的聚合数据。即使卡夫卡主题数据增加,我们也很好。
为了实现这一点,我应该遵循什么配置或代码实践?
如果您从不希望Kafka删除主题数据,则可以设置retention.ms=-1
。
但紧凑的主题永远不会失去历史,每把钥匙都有最新的事件。例如,如果在两个小时时间戳(如2022-08-30:0900/2022-08-30:1000
(之间有窗口密钥,那么没有新记录发送相同的密钥,那么它将永远存储。