有关prevent()方法的卡夫卡流问题

时间:2019-11-13 08:16:11

标签: apache-kafka apache-kafka-streams

我想使用windowby()count()方法来获取请求计数,然后在toStream()方法之后显示数据。

 source.groupByKey()
        .windowedBy(TimeWindows.of(Duration.ofSeconds(30))
            .advanceBy(Duration.ofSeconds(30))
            .grace(Duration.ZERO))
        .count(Materialized.with(Serdes.String(), Serdes.Long()))
        .suppress(Suppressed.untilWindowCloses(Suppressed.BufferConfig.unbounded()))
        .toStream()
        .foreach((k, v) -> log.info("dataStream k: {} v: {}", k.key(), v));

我发现如果我连续输入记录,数据可以正常流向foreach()方法。但是当我停止输入记录并且关闭了最后一个窗口时,foreach()方法中没有日志。

如何获取缓存数据?

我还发现,在suppress()之后,存在数据积累的可能性。在suppress()之后,只要有一个数据流到foreach(),数据就放在一个随机窗口中,而没有流到foreach()。这个过程发生了什么?

0 个答案:

没有答案