Kafka Stream:最终结果会立即发出吗?

时间:2019-02-19 02:37:02

标签: apache-kafka apache-kafka-streams

时间窗口关闭时,最终结果会立即发出还是有新记录出现时才发出?

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())

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

2 个答案:

答案 0 :(得分:0)

  

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

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

  

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

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

无法根据壁钟时间安全关闭窗口-suppress()仅基于事件时间,并且事件时间只能处理高级记录。

答案 1 :(得分:0)

我遇到了同样的问题,即直到出现新消息,最后一个窗口才发出。 我最终做了一个愚蠢的卡夫卡制作人,每分钟用一个虚拟密钥“ hb”向该主题发布一个虚拟消息,然后发出最后一个窗口结果。