Apache kafka 使用翻滚窗口时,如何选择时间语义的类型?

Apache kafka 使用翻滚窗口时,如何选择时间语义的类型?,apache-kafka,apache-kafka-streams,Apache Kafka,Apache Kafka Streams,我正在研究kafka streams窗口,特别是我的用例中的翻滚窗口 TimeWindowedKStream<String, Blob> windowedStreams = groupedStreams .windowedBy(TimeWindows.of(TimeUnit.MINUTES.toMillis(5))); TimeWindowedKStream windowedStreams=groupedStreams .windowedBy(Tim

我正在研究kafka streams窗口,特别是我的用例中的翻滚窗口

TimeWindowedKStream<String, Blob> windowedStreams = groupedStreams
                .windowedBy(TimeWindows.of(TimeUnit.MINUTES.toMillis(5)));
TimeWindowedKStream windowedStreams=groupedStreams
.windowedBy(TimeWindows.of(TimeUnit.MINUTES.toMillis(5));
这是一个滚动窗口,每个记录键滚动5分钟,向前移动5分钟。对于我的用例,我不希望删除旧消息,因此我希望它将处理时间视为时间语义。p>
对于时间语义,翻滚窗口的默认行为是什么?我如何在翻滚窗口中指定要选择的时间语义?事件时间/处理时间/摄取时间。

时间语义不在窗口定义中指定,而是取决于配置的
时间提取程序。如果要切换到处理时间语义,可以在
KafkaStreams
配置中将
default.timestamp.extractor
设置为
wallclocktimestextractor.class

比较


这同样适用于所有类型的窗口。我可以看到“default.timestamp.extractor”的默认配置是“TimestampExtractor.class”。在阅读timestamp.extractor的文档时,我了解到它从记录中提取时间戳。在这里,我在生成时没有设置任何配置。那么记录的默认时间戳是什么?是在生产者处生成记录的时间吗?如文档中所述,默认的提取程序是'FailOnInvalidTimestamp.class',它从时间戳字段返回嵌入的记录时间戳。如果您的主题配置为
创建时间
语义,则此时间戳将由制作人设置。