Kafka Streams - 低级处理器API - RocksDB TimeToLive(TTL)

时间:2017-05-09 02:33:37

标签: apache-kafka apache-kafka-streams rocksdb

我正在尝试使用低级处理器API。我正在使用处理器API对传入记录进行数据聚合,并将聚合记录写入RocksDB。

但是,我想保留在rocksdb中添加的记录仅在24小时内保持活动状态。 24小时后,应删除记录。这可以通过更改ttl设置来完成。但是,没有太多文档我可以在这方面得到一些帮助。

如何更改ttl值?应该用什么java api将ttl时间设置为24小时,并且当前的默认ttl设置时间是什么时候?

1 个答案:

答案 0 :(得分:3)

我认为目前没有通过api或配置公开。 RocksDBStore在打开RocksDB时传递硬编码的TTL: https://github.com/apache/kafka/blob/trunk/streams/src/main/java/org/apache/kafka/streams/state/internals/RocksDBStore.java#L158 硬编码的值只是TTL_SECONDS = TTL_NOT_USED(-1)(参见同一文件中的第79行)。

目前有两张关于在国家商店中展示TTL支持的开放票:KAFKA-4212和KAFKA-4273: https://issues.apache.org/jira/issues/?jql=project%20%3D%20KAFKA%20AND%20text%20~%20%22rocksdb%20ttl%22 我建议你评论其中一个描述你的用例以使他们继续前进。

在此期间,如果你现在需要TTL功能,状态存储是可插拔的,并且RocksDBStore源可以随时使用,所以你可以分叉并设置你的TTL值(或者像KAFKA-4273相关的拉取请求一样建议,从配置中获取。)

我知道这并不理想,并且真心希望有人能提出更满意的答案。