Как выбрать тип временной семантики при работе с падающими окнами?

#apache-kafka #apache-kafka-streams

#apache-kafka #apache-kafka-streams

Вопрос:

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

 TimeWindowedKStream<String, Blob> windowedStreams = groupedStreams
                .windowedBy(TimeWindows.of(TimeUnit.MINUTES.toMillis(5)));
  

это выпадающее окно на 5 минут для каждого ключа записи и увеличивается на 5 минут. Для моего варианта использования я не хочу, чтобы старое сообщение удалялось, и, следовательно, я хочу, чтобы оно учитывало время обработки как семантическое время.

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

Комментарии:

1. то же самое применимо для всех типов окон.

Ответ №1:

Временная семантика не указана в определении окна, но зависит от настроенного TimestampeExtractor . Если вы хотите переключиться на семантику времени обработки, вы можете установить default.timestamp.extractor значение WallclockTimestampExtractor.class в KafkaStreams конфигурации.

Сравнить

Комментарии:

1. я мог видеть конфигурацию по умолчанию для «default.timestamp.extractor» — это «TimestampExtractor.class «. прочитав документацию timestamp.extractor, я понял, что он извлекает временную метку из записи. Здесь я не задаю никакой конфигурации во время создания. итак, какова временная метка по умолчанию для записи? это время, когда запись генерируется в producer?

2. Как объясняется в документах, по умолчанию используется экстрактор ` FailOnInvalidTimestamp.class `которые возвращают временную метку встроенной записи из поля timestamp. Если ваша тема настраивается с create-time помощью семантики, эта временная метка будет установлена производителем.