Comment supprimer/nettoyer Kafka messages en file d'attente sans la suppression de Sujet
Est-il un moyen de supprimer les messages en file d'attente sans la suppression de Kafka sujets?
Je souhaite supprimer les messages en file d'attente lors de l'activation de la consommation.
Je sais qu'il ya plusieurs façons comme:
-
Réinitialisation temps de rétention
$ ./bin/kafka-topics.sh --zookeeper localhost:2181 --alter --topic MyTopic --config retention.ms=1000
-
La suppression de kafka fichiers
$ rm -rf /data/kafka-logs/<topic/Partition_name>
- Le temps de rétention astuce vous mentionner d'abord est beaucoup mieux. La deuxième façon provoque des problèmes pour les répliqué sujets et rend les métadonnées pour le sujet non conformes à la réalité. Notez que le décalage ne vais pas revenir à zéro.
Vous devez vous connecter pour publier un commentaire.
De 0,11 ou plus, vous pouvez exécuter l'bin/kafka-delete-records.sh commande pour marquer les messages à supprimer.
https://github.com/apache/kafka/blob/trunk/bin/kafka-delete-records.sh
Par exemple publier des 100 messages
puis supprimer 90 de ces 100 messages avec la nouvelle kafka-delete-records.sh
outil de ligne de commande
où offsetfile.json contient
et consomment les messages depuis le début pour vérifier que 90 des 100
les messages sont en effet marqués comme supprimés.
Pour supprimer tous les messages dans un sujet spécifique, vous pouvez exécuter
kafka-delete-records.sh
Par exemple, j'ai un sujet appelé
test
, qui a 4partitions
.Créer un
Json
fichier , par exemplej.json
:maintenant supprimer tous les messages à cette commande :
Après l'exécution de la commande, ce message sera affiché