首页 > 解决方案 > Kafka Stream:最终结果立即发出?

问题描述

当时间窗口关闭时,最终结果立即发出还是什么时候有新记录出现然后发出?

val builder = StreamsBuilder();
   builder.stream<String,Double>(inputTopic, Consumed.with(Serdes.String(), 
   Serdes.Double()))
        .groupByKey()
        .windowedBy(TimeWindows.of(Duration.ofSeconds(15)).grace(Duration.ZERO))
        .count()
        .suppress(Suppressed.untilWindowCloses(unbounded())))
        .toStream()
        .print(Printed.toSysOut())

时间窗口关闭时如何立即发出最终结果?

标签: apache-kafkaapache-kafka-streams

解决方案


时间窗口关闭时如何立即发出最终结果?

最终结果在时间窗口关闭时立即发出。

或者当有新记录出现时发出

但是,只有在处理时间戳大于窗口关闭时间的记录后,才能安全地关闭时间窗口。

不能基于挂钟时间安全地关闭窗口——suppress()纯粹基于事件时间,而事件时间只能处理高级记录。


推荐阅读