Потоки Кафки (Подавление): закрытие окна времени по таймауту - PullRequest
0 голосов
/ 26 февраля 2019

У меня есть следующий фрагмент кода для ежечасной агрегации данных на основе времени события

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, а о том, как его закрытьпри отсутствии новых данных

...