Потребитель Kafka выходит за пределы диапазона без настроенной политики reset для разделов

Я получаю исключение, когда начинаю потребитель Кафки.

org.apache.kafka.clients.consumer.OffsetOutOfRangeException: Offsets out the range без конфигурации reset для разделов {test-0 = 29898318}

Я использую Kafka версии 9.0.0 с Java 7.

Ответ 1

Итак, вы пытаетесь получить доступ к смещению (29898318) в разделе раздела (test) (0), который недоступен прямо сейчас.

Для этого

могут быть два случая:
  • В разделе темы 0 может не быть таких сообщений
  • Ваше сообщение со смещением 29898318, возможно, уже удалено по периоду хранения

Чтобы избежать этого, вы можете сделать следующее:

  • Установите auto.offset.reset config либо в smallest, либо largest. Вы можете найти дополнительную информацию об этом здесь
  • Вы можете получить smallest offset для раздела темы с помощью запуск следующего инструмента командной строки Kafka

Команда:

bin/kafka-run-class.sh kafka.tools.GetOffsetShell --broker-list <broker-ip:9092> --topic <topic-name> --time -2

Надеюсь, это поможет!

Ответ 2

Я задал этот SO вопрос при запуске хранилища состояний Kafka Streams с определенной конфигурацией темы журнала изменений:

  • cleanup.policy=cleanup,delete
  • срок хранения 4 дня

Если в Kafka Streams по-прежнему имеется файл моментального снимка, указывающий на смещение, которого больше нет, потребитель восстановления настроен на ошибку. Это не отступает к самому раннему смещению. Этот сценарий может произойти, когда поступает очень мало данных или когда приложение не работает. В обоих случаях, когда в течение срока хранения журнала изменений нет изменений, файл снимка не будет обновлен. (Это на основе разделов)

Самый простой способ решить эту проблему - остановить приложение Kafka Streams, удалить его локальный каталог состояний и перезапустить приложение.

Ответ 3

Я ударил с ошибкой "org.apache.kafka.clients.consumer.OffsetOutOfRangeException: смещения вне диапазона без настроенной политики сброса для разделов: [topic-2 = 2120]" - при перезапуске потребительского приложения со offset.auto.commit to ложный.

Возможные случаи: → Группа потребителей была неактивна, и во время политики хранения, примененной к теме (очень короткие периоды хранения), политика автоматического сброса не установлена → Политика автоматического сброса установлена, но не удалось применить автоматический сброс в нескольких экземплярах потребителей группы.

Предпринятые действия: → Сброс смещения группы потребителей для всей/конкретной темы: {самое раннее/последнее/текущее} → Запустить приложение потребителя.