Опрос потребителей Kafka не читает ту же партию, даже автоматическое смещение отключено - PullRequest
1 голос
/ 19 октября 2019

Я хочу понять поведение метода kafkaConsumer.poll (), который я настроил для своего потребителя, чтобы он не выполнял автоматическую фиксацию

    Properties properties = new Properties();
    properties.setProperty("bootstrap.servers", bootstrapAddress);
    KafkaConsumer consumer = new KafkaConsumer(properties);

Насколько я понимаю, основываясь на Javadoc, если я делаю

    ConsumerRecords firstBatch = consumer.poll(0l);
    ConsumerRecords secondBatch = consumer.poll(0l);

И firstBatch, и secondBatch должны содержать одинаковые ConsumerRecords, при условии, что в теме только один раздел, так как смещение не было зафиксировано. Правильно ли мое предположение? Моя проблема в том, что каждый раз, когда я вызываю consumer.poll(0l), следующая партия ConsumerRecords извлекается

1 Ответ

1 голос
/ 19 октября 2019

И firstBatch, и secondBatch должны содержать одинаковые ConsumerRecords

Это неверно, смещение потребителя Kafka будет автоматически увеличиваться при каждом последующем опросе, даже если auto offset отключен или offset установленотправлено вручную

Смещения и позиция потребителя

Позиция потребителя дает смещение следующей записи, которая будет выдана,Это будет на единицу больше, чем максимальное смещение, увиденное потребителем в этом разделе. Он автоматически продвигается каждый раз, когда потребитель получает сообщения при вызове на опрос (long)

Фиксированная позиция - это последнее смещение, которое было надежно сохранено. В случае сбоя и перезапуска процесса это смещение, к которому будет восстанавливаться потребитель. Потребитель может периодически автоматически фиксировать смещения;или он может выбрать управление этой зафиксированной позицией вручную, вызвав один из API-интерфейсов фиксации (например, commitSync и commitAsync).

И ваше предположение верно по-другому, когда offset не зафиксировано иПотребитель kafka перезапускается, он будет опрашивать старую партию или с самого начала, где бы ни было представлено старое смещение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...