#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
помощью семантики, эта временная метка будет установлена производителем.