2017-05-09 9 views
1

저급 프로세서 API를 실험 해보았습니다. 들어오는 레코드에 대한 데이터 집계는 프로세서 API를 사용하고 집계 된 레코드를 RocksDB에 쓰고 있습니다.Kafka Streams - 저수준 프로세서 API - RocksDB TimeToLive (TTL)

그러나 rocksdb에 추가 된 레코드를 24 시간 동안 만 활성 상태로 유지하려고합니다. 24 시간이 지나면 기록을 삭제해야합니다. 이것은 ttl 설정을 변경하여 수행 할 수 있습니다. 그러나, 이것에 대한 도움을 얻을 수있는 문서는별로 없습니다.

어떻게 ttl 값을 변경합니까? 무슨 자바 API를 내가 24 시간 ttl 시간을 설정하고 현재 기본 ttl 설정 시간을 뭐라고 사용해야합니까?

답변

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 지원 노출에 대한 공개 티켓 : 나는 당신이 그 중 하나는 전진을 얻기 위해 사용 사례를 설명에 대한 의견 제시 https://issues.apache.org/jira/issues/?jql=project%20%3D%20KAFKA%20AND%20text%20~%20%22rocksdb%20ttl%22 : 카프카-4212와 카프카-4273입니다. 당신이 지금 TTL 기능을 필요로하는 경우 중간에

는 상태 저장 플러그, 그리고 RocksDBStore 소스가 쉽게 사용할 수, 그래서 당신은 KAFKA-과 관련된 풀 요청처럼, 그것을 포크와 TTL 값을 설정 (또는 수 4273 제안, configs에서 소스).

저는 이것이 이상적이지 않고 진심으로 누군가가 더 만족스러운 대답을 내놓기를 바랍니다.