【问题标题】:Kafka Streams - Low-Level Processor API - RocksDB TimeToLive(TTL)Kafka Streams - 低级处理器 API - RocksDB TimeToLive(TTL)
【发布时间】:2017-10-07 04:36:29
【问题描述】:

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

但是,我希望将添加到rocksdb 中的记录保留为仅在24 小时内处于活动状态。 24 小时后应删除记录。这可以通过更改 ttl 设置来完成。但是,我可以在这方面获得帮助的文档并不多。

如何更改 ttl 值?我应该使用什么 java api 将 ttl 时间设置为 24 小时以及当前默认的 ttl 设置时间是多少?

【问题讨论】:

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


    【解决方案1】:

    我相信这目前没有通过 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 行)。

    目前有 2 个关于在州商店中公开 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 关联的拉取请求建议,从配置中获取它)。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-10-06
      • 1970-01-01
      • 1970-01-01
      • 2017-01-07
      • 1970-01-01
      • 1970-01-01
      • 2019-06-02
      • 2018-08-25
      相关资源
      最近更新 更多