#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:
- ‘retention.ms’ свойство будет работать, когда log.cleanup.policy = ‘удалить’
- Это должно быть установлено с вашей стороны, т. е. Почему данные очищаются
- ‘log.retention.check.interval.ms» должно быть меньше, чем retention.ms если вы хотите, чтобы ваши данные удалялись после каждого ‘retention.ms — миллисекунды.
Скриншот из официального документа
Так как значение по умолчанию ‘log.retention.check.interval.ms» составляет 5 минут, следовательно, сообщения удаляются каждые 5 минут.
Комментарии:
1. Эй, большое спасибо за ваш ответ ! Можете ли вы объяснить пункт в графе «1» ? Я не очень хорошо это понимаю ?
2. @Kevin delete-это политика очистки по умолчанию, поэтому я бы не стал беспокоиться об этом
3. Я имел в виду, что если политика очистки журнала не «удалить», в этом случае события не будут удалены. Однако, поскольку вы упомянули, что они удаляются, это, похоже, не так. Пожалуйста, примите это как ответ, если это помогло