Кафка по умолчанию хранит сообщения в течение 168 часов, что составляет 7 дней. Если вы хотите заставить kafka очистить тему, вы можете сделать это несколькими способами. Давайте рассмотрим каждую деталь.
1. Использование команды kafka-configs.sh
Временно изменить политику хранения на 1 сек.
kafka-configs.sh --zookeeper localhost:2181 --alter --entity-type topics --add-config retention.ms=1000 --entity-name text_topic
Вы можете проверить текущее значение политики хранения, выполнив следующую команду.
kafka-configs.sh --zookeeper localhost:2181 --entity-type topics --describe --entity-name text_topic
Configs for topic 'text_topic' are retention.ms=1000
Подождите 1 секунду и удалите конфигурацию политики хранения, которая вернет значение по умолчанию.
kafka-configs.sh --zookeeper localhost:2181 --alter --entity-type topics --delete-config retention.ms --entity-name text_topic
2. Удалить тему и заново создать
Прежде чем удалить существующую тему, сначала получите раздел и реплику текущей темы, так как они понадобятся вам для воссоздания темы. Вы можете получить эту информацию, запустив описание темы
kafka-topics.sh --zookeeper localhost:2181 --describe --topic text_topic
Topic:text_topic PartitionCount:3 ReplicationFactor:3 Configs:
Topic: text_topic Partition: 0 Leader: 0 Replicas: 0 Isr: 0
Удалить тему.
kafka-topics.sh --zookeeper localhost:2181 --delete --topic text_topic
Повторно создайте тему с подробностями репликации и раздела.
kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 3 --partitions 3 --topic text_topic
3. Удалите данные из журналов kafka вручную.
- Остановите зоокейпера и кафку со всех узлов.
- Очистить логи кафки со всех узлов. Кафка хранит свои журналы на
/ tmp / kafka-logs / MyTopic-0, где / tmp / kafka-logs определяется
log.dirattribute
- Перезапустите зоокейпер и кафку.
Надеюсь, это поможет !!