如何设置由Kafka流创建的状态存储的保留期限

时间:2019-05-23 15:26:51

标签: apache-kafka-streams

我正在使用Streams DSL并进行状态聚合(从一个主题读取数据,将数据聚合并将其写入另一个主题)。如何减少写入状态存储的数据的保留期限?现在,我的基础设施团队说,这些数据在状态存储中保留了5年,我必须减少这种情况。我可以设置一个特定的配置来保留数据多长时间吗?

    KTable<Windowed<String>, JSONObject> kTable = filteredKstream
            .groupBy((key, value) -> getNewKey(value),
                    Grouped.with(Serdes.String(), new JSONObjectSerde()))
            .windowedBy(windows).aggregate(() -> {
                SampleData sampleData = new SampleData();
                return new JSONObject(mapperUtils.writeValueAsString(sampleData, mapper));
            } , (key, value, aggregate) -> {
                return getAggregateValue(aggregate, value);
            } , Materialized
                    .<String, JSONObject, WindowStore<Bytes, byte[]>> as(
                            "sample-store")
                    .withKeySerde(Serdes.String())
                    .withValueSerde(jsonSerde));

1 个答案:

答案 0 :(得分:0)

您可以使用audioSessionId设置窗口存储和会话存储的保留期。

https://kafka.apache.org/22/javadoc/org/apache/kafka/streams/kstream/Materialized.html#withRetention-java.time.Duration-