Как или когда истекает временное окно Kafka Streams? - PullRequest
0 голосов
/ 26 декабря 2018

Я использую потоки Кафки в своем приложении, у меня есть вопрос о временном окне в статистической функции.

KTable<Windowed<String>, PredictReq> windowedKtable = views.map(new ValueMapper()).groupByKey().windowedBy(TimeWindows.of(TimeUnit.MINUTES.toMillis(1)))
            .aggregate(new ADInitializer(), new ADAggregator(),Materialized.with(Serdes.String(), ReqJsonSerde));

KStream<Windowed<String>, Req> filtered = windowedKtable.toStream().transform(new ADTransformerFilter());

KStream<String, String> result = filtered.transform(new ADTransformerTrans());

Я собираю данные в одноминутном окне, а затем преобразую, чтобы получить окончательный результат агрегирования и выполнитьвторое преобразование.

Вот некоторые примеры данных:

msg1: 10:00:00 приходит, msg2: 10:00:20 приходит, msg3: 10:01:10 приходит

Например,

окно запускается с 10:00:00 до 10:01:00.

Я обнаружил, что срок действия окон не истек, пока не появится msg3!(потому что следующее преобразование не выполняется до тех пор, пока не появится msg3.)

Это не то, что я хочу.

Что-то не так в моем тестировании?Если это правда, как это изменить?

1 Ответ

0 голосов
/ 26 декабря 2018

Понятно ...

Потоки Кафки не имеют понятия window expired.поэтому я использую окно в сообщении, чтобы проверить, изменилось ли окно, поэтому я должен ждать сообщения из следующего окна.

Если следующее сообщение не пришло, я не знаю, что окно завершено.

...