В KafkaAdmin API из версии 2.5.0. Этот метод может возвращать смещение по отметке времени.

/**
 * Used to retrieve the the earliest offset whose timestamp is greater than
 * or equal to the given timestamp in the corresponding partition
 * @param timestamp in milliseconds
 */
public static OffsetSpec forTimestamp(long timestamp) {
    return new TimestampSpec(timestamp);
}

А также этот метод возвращает объект ListOffsetsResultInfo, который имеет поля offset и timestamp. Итак, мой вопрос -> Какую метку времени в обоих случаях упоминает API? Используется ли метка времени KafkaRecord, если да -> может ли он работать с message.timestamp.type=CreateTime? Или только с message.timestamp.type=LogAppendTime?

0
Grigoriev Nick 10 Фев 2021 в 21:37

1 ответ

Лучший ответ

Когда записи отправляются в Kafka, производители могут указывать временную метку или нет в зависимости от message.timestamp.type. Если производитель не указал метку времени, Kafka установит ее текущее время. Итак, в конце концов, каждая запись имеет одно значение для временной метки.

Аргумент timestamp OffsetSpec.forTimestamp() проверяется брокером по метке времени записи Kafka.

Он применяется независимо от того, пришла ли временная метка Записи из CreateTime (предоставлена ​​производителями) или LogAppendTime предоставлена ​​брокером.

1
Mickael Maison 11 Фев 2021 в 10:27