イベント時間に基づいて1時間ごとにデータを集計する次のコードがあります
KStream<Windowed<String>, SomeUserDefinedClass> windowedResults = inputStream
.groupByKey(Grouped.with(Serdes.String(), new SomeUserDefinedSerde<>()))
.windowedBy(TimeWindows.of(Duration.ofMinutes(60)).grace(Duration.ofMinutes(15)))
.aggregate
(
// do some aggregation
)
.suppress(Suppressed.untilTimeLimit(Duration.ofMinutes(75), Suppressed.BufferConfig.unbounded()))
.toStream();
問題は、制限時間 + 猶予期間より後の同じキーとタイムスタンプを持つデータを受信しない場合、タイム ウィンドウを閉じて結果を出力できないことです。
ウィンドウが閉じられ、特定の時間が経過すると(同じキーの新しいデータを待たずに)データが出力されるようにするために使用できる代替手段を知りたいです。
イベント時間ではなく、リアルタイムに基づいて untilTimeLimit パラメータを作成するオプション/機能はありますか?
注: この質問は、TimeWindow が閉じられない理由に関するものではなく、新しいデータがない場合に閉じる方法に関するものです。