Политика хранения Кафки работает не так, как ожидалось

#apache-kafka

Вопрос:

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

bin/kafka-configs.sh --zookeeper localhost:2181 --alter --entity-type topics --entity-name my-topic-name --add-config retention.ms=1

Что, в моем понимании, должно очистить некоторые записи (или, по крайней мере, заставить их исчезнуть, когда потребитель начнет читать сообщения с самого начала) через 1 миллисекунду.

Но то, что произошло на самом деле, странно. Каждые примерно 5 минут последние 5 минут сообщения удаляются и больше не появляются. так, например, если я буду отправлять сообщение каждую минуту, у меня будет 5 сообщений, затем 0, снова 5, затем 0 и т. Д.

Так что, я полагаю, моя команда вообще не работает ?

Я использую кафку 2.8.0

Большое спасибо ! Кев

Комментарии:

1. Кстати, флаг смотрителя зоопарка устарел. Используйте загрузочный сервер

Ответ №1:

  1. ‘retention.ms’ свойство будет работать, когда log.cleanup.policy = ‘удалить’
    • Это должно быть установлено с вашей стороны, т. е. Почему данные очищаются
  2. ‘log.retention.check.interval.ms» должно быть меньше, чем retention.ms если вы хотите, чтобы ваши данные удалялись после каждого ‘retention.ms — миллисекунды.

введите описание изображения здесь Скриншот из официального документа

Так как значение по умолчанию ‘log.retention.check.interval.ms» составляет 5 минут, следовательно, сообщения удаляются каждые 5 минут.

Комментарии:

1. Эй, большое спасибо за ваш ответ ! Можете ли вы объяснить пункт в графе «1» ? Я не очень хорошо это понимаю ?

2. @Kevin delete-это политика очистки по умолчанию, поэтому я бы не стал беспокоиться об этом

3. Я имел в виду, что если политика очистки журнала не «удалить», в этом случае события не будут удалены. Однако, поскольку вы упомянули, что они удаляются, это, похоже, не так. Пожалуйста, примите это как ответ, если это помогло