Apache kafka streams 如何为Kafka streams创建的状态存储设置保留期

Apache kafka streams 如何为Kafka streams创建的状态存储设置保留期,apache-kafka-streams,Apache Kafka Streams,我正在使用Streams DSL并进行有状态聚合(从一个主题读入数据,聚合数据并将其写入另一个主题)。如何缩短写入状态存储的数据的保留期?现在,我的infra团队说,数据在国家存储中保留5年,我必须减少这一点。是否有我可以设置数据应保留多长时间的特定配置 KTable<Windowed<String>, JSONObject> kTable = filteredKstream .groupBy((key, value) -> getN

我正在使用Streams DSL并进行有状态聚合(从一个主题读入数据,聚合数据并将其写入另一个主题)。如何缩短写入状态存储的数据的保留期?现在,我的infra团队说,数据在国家存储中保留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));
KTable KTable=filteredKstream
.groupBy((键,值)->getNewKey(值),
Grouped.with(Serdes.String(),new JSONObjectSerde())
.windowedBy(windows).aggregate(()->{
SampleData SampleData=新的SampleData();
返回新的JSONObject(mapperUtils.writeValueAsString(sampleData,mapper));
},(键、值、聚合)->{
返回getAggregateValue(聚合,值);
},具体化
.作为(
“样本库”)
.withKeySerde(Serdes.String())
.使用ValueSerde(jsonSerde));

您可以使用
物化的#withRetention()
设置窗口和会话存储的保留期


@MatthiasJ.Sax我知道您已经回答了类似的问题。所以,我只是想知道你是否对商店的默认保留时间是1天有什么见解——不知道为什么你的团队声称是5年。。。还有,@michael-g-noll给出了答案。(顺便说一句:标签不是这样工作的——我没有收到通知,只是通过浏览发现了这个问题。)