Я относительно новичок в Кафке. Я немного поэкспериментировал с этим, но некоторые вещи мне неясны в отношении компенсации потребителю. Из того, что я понял до сих пор, когда потребитель начинает, смещение, с которого он начнет читать, определяется настройкой конфигурации auto.offset.reset
(поправьте меня, если я ошибаюсь).
Теперь скажем, например, что в теме 10 сообщений (смещений от 0 до 9), и потребитель получал 5 из них до того, как оно вышло из строя (или до того, как я убил потребителя). Затем скажите, что я перезапускаю этот процесс. Мои вопросы:
Если
auto.offset.reset
установлено значениеsmallest
, всегда ли оно начнет потреблять со смещения 0?Если
auto.offset.reset
установлено значениеlargest
, оно начнет потреблять со смещения 5?Всегда ли поведение в отношении такого сценария детерминировано?
Пожалуйста, не стесняйтесь комментировать, если что-то в моем вопросе неясно. Заранее спасибо.
источник
auto.offset.reset
это не имеет никакого значения после этого? Единственное значение этого параметра - когда ничего не совершено (и в идеале это будет при первом запуске потребителя)?auto.offset.reset
и продолжать с зафиксированного смещения. Если вы всегда используете другую группу потребителей (например, генерировать ее при запуске потребителя), то потребитель всегда будет уважатьauto.offset.reset
Просто обновление: начиная с Kafka 0.9 и далее, Kafka использует новую Java-версию потребителя, и имена параметров auto.offset.reset изменились; Из руководства:
Я потратил некоторое время, чтобы найти это после проверки принятого ответа, поэтому подумал, что сообществу может быть полезно опубликовать его.
источник
Более того, есть offsets.retention.minutes. Если время с момента последнего коммита>
offsets.retention.minutes
, тоauto.offset.reset
такжеисточник
Prolong default value of offsets.retention.minutes to be at least twice larger than log.retention.hours.
questions.apache.org/jira/browse/KAFKA-3806offsets.retention.minutes
:. <Б> После того, как группа потребителей теряет все свои потребитель (т.е. становится пустой) его смещения будут храниться в течение срока хранения перед тем , как отбрасывается </ b> Для автономного потребителям (используя ручное назначение), смещения будут истекать после времени последнего принятия плюс этот период хранения. (Это дляKafka 2.3
)