У меня есть следующий фрагмент кода для ежечасной агрегации данных на основе времени события
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();
Проблема в том, что я не могу закрыть временное окно и вывести результаты, если я не получаю данныес тем же ключом и отметкой времени позже, чем ограничение по времени + льготный период.
Я хотел бы знать, какие альтернативы я могу использовать, чтобы убедиться, что окно закрыто и данные отправляются по истечении заданного времени (без ожидания каких-либо новых данных для того же ключа).
Есть ли опция / функция, позволяющая сделать параметр tillTimeLimit на основе реального времени, а не времени события?
Примечание. Этот вопрос не о том, почему не закрывается TimeWindow, а о том, как его закрытьпри отсутствии новых данных