我想使用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()
。这个过程发生了什么?