Потребитель 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 ложный.
Возможные случаи: → Группа потребителей была неактивна, и во время политики хранения, примененной к теме (очень короткие периоды хранения), политика автоматического сброса не установлена → Политика автоматического сброса установлена, но не удалось применить автоматический сброс в нескольких экземплярах потребителей группы.
Предпринятые действия: → Сброс смещения группы потребителей для всей/конкретной темы: {самое раннее/последнее/текущее} → Запустить приложение потребителя.