Kafka Consumer продолжает получать данные, которые были произведены и использованы 2 дня назад, каждые 5 минут - PullRequest
2 голосов
/ 19 апреля 2019

Я работаю с Kafka Consumer и замечаю, что он потребляет сообщения, которые должны были быть использованы 2 дня назад. Эти сообщения повторяются примерно каждые 5 минут, и производитель больше не производит эти сообщения в течение 2 дней.

У меня есть новые данные, которые должны были быть использованы, и журналы производителя показывают, что новые данные создаются и отправляются в Kafka. Но он не потребляется с другой стороны, он просто повторяет одни и те же данные снова и снова.

Приложение Kafka построено поверх загрузки Spring.

Редактировать: источник запускается каждые 10 минут и запрашивает новые данные для отправки.

Обновление: я увеличил max.poll.interval.ms с 5 минут до 1 часа. В настоящее время прошло не больше часа с тех пор, как я обновил его, но я не вижу повторяющихся данных. Но есть ли способ получить уведомление, если истекло время ожидания?

Обновление: я должен указать это, есть два потребителя кафки, и я вижу что-то об отзыве раздела.

Ответы [ 2 ]

0 голосов
/ 19 апреля 2019

Может быть две причины: -> Ваша конфигурация выглядит так: enable.auto.commit: false и auto.commit.interval.ms: некоторое значение Вторая конфигурация вызывает сообщения, появляющиеся после некоторого определенного интервала (некоторого значения). То же сообщение появляется на стороне потребителя для обработки, поскольку сообщение не было успешно обработано в первый раз. Если информация о последнем смещении недоступна для zookeeper или broker, и для auto.offset.reset задано наименьшее (или самое раннее) значение, тогда обработка начнется с наименьшего смещения. Измените auto.offset.reset на наибольшее (или последнее), если вы не хотите повторно обрабатывать одно и то же сообщение (в этом случае сообщение может быть потеряно).

-> Как предполагает @mjuarez, вполне возможно, что идентификатор группы потребителей меняется каждый раз.

0 голосов
/ 19 апреля 2019

У меня есть несколько предложений:

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