我了解默认TTL设置为无穷大(非正数)。但是,如果我们需要将数据保留在存储中最多2天,我们可以使用RocksDBConfigSetter接口实现(即options.setWalTtlSeconds(172800))进行覆盖吗?还是会与Kafka Streams内部构件冲突?
答案 0 :(得分:0)
目前无法实现。由于各种技术原因,Kafka Streams以硬编码方式禁用了RocksDB的TTL功能。也有一张票:https://issues.apache.org/jira/browse/KAFKA-4212
要知道,您可以在2天后使用窗口存储来使旧记录过期。即,您使用stream.groupByKey().windowedBy(...).reduce(...)
进行1 {ms}的TimeWindow
运算,然后执行“虚拟”操作,以减少密钥返回值。