Опрос потребителей Spring Kafka с указанием c смещений во время выполнения - PullRequest
0 голосов
/ 26 апреля 2020

При использовании пружинной кафки в нашем потребителе кафки. В соответствии с моим бизнес-требованием, мне нужно снова вернуться к той же партии записей в случае сбоя при обработке этой партии. Согласно https://kafka.apache.org/22/javadoc/org/apache/kafka/clients/consumer/KafkaConsumer.html, раздел: - «Смещения и позиция потребителя» говорит, что Кафка поддерживает числовое смещение для каждой записи в разделе. Это смещение действует как уникальный идентификатор записи в этом разделе, а также обозначает позицию потребителя в разделе. Например, потребитель, который находится в позиции 5, использовал записи со смещением от 0 до 4 и затем получит запись со смещением 5. На самом деле есть два понятия позиции, относящиеся к пользователю потребителя: -

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

  • Принятая позиция - это последнее смещение, которое было надежно сохранено. Если процесс завершится неудачно и перезапустится, это смещение, к которому будет восстанавливаться потребитель. Потребитель может либо автоматически фиксировать смещения периодически; или он может управлять этой зафиксированной позицией вручную, вызывая один из API-интерфейсов фиксации (например, commitSyn c и commitAsyn c).

Для моего варианта использования я хочу контролировать первый. Есть ли способ сделать это?

1 Ответ

0 голосов
/ 26 апреля 2020

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

Реализация ConsumerSeekAware для поиска начало во время запуска.

...