Kafka 流:RocksDB TTL

Kafka Streams: RocksDB TTL

我了解默认 TTL 设置为无穷大(非正值)。但是,如果我们需要在存储中保留数据最多 2 天,我们是否可以使用 RocksDBConfigSetter 接口实现来覆盖,即 options.setWalTtlSeconds(172800)?或者它会与 Kafka 流内部结构冲突吗?

参考: https://docs.confluent.io/current/streams/developer-guide/config-streams.html#streams-developer-guide-rocksdb-config

这目前是不可能的。由于各种技术原因,Kafka Streams 以硬编码的方式禁用了 RocksDB 的 TTL 功能。这个还有个票:https://issues.apache.org/jira/browse/KAFKA-4212

目前,您可以使用窗口存储让旧记录在 2 天后过期。即,您使用 TimeWindow 为 1 毫秒的 stream.groupByKey().windowedBy(...).reduce(...) 和一个“虚拟”减少只是 return 键的最新值。