2017-09-18 2 views
1

J'utilise Kafka comme magasin d'événements pour un système d'approvisionnement d'événements.Suppression du sujet Kafka

Dans les tests d'intégration, je supprime tous les sujets actuellement disponibles dans Kafka en exécutant

kafka-topics.sh --zookeeper localhost:2181 --delete --topic <topic-name> 

pour chaque sujet existant, pour vous assurer que les données « anciennes » n'affecte pas les tests suivants. Je suis conscient que les sujets sont seulement marqués pour la suppression, mais pas supprimés en place. Et, dans la plupart des cas, c'est bon pour moi.

Mais dans certains cas de test, un sujet s'avère ne pas être supprimé lorsque je le crée à nouveau (en écrivant un enregistrement dans les rubriques). Dans ce cas, Kafka lance UnknownTopicOrPartitionException.

Je me demande s'il existe un moyen de forcer Kafka à supprimer le sujet (ou du moins à augmenter les chances de suppression).

Je vous serais reconnaissant pour tout conseil.

J'utilise Kafka 0.11.0.1

Répondre

0

Vous ne devez pas supprimer le sujet afin de se défaire des données « anciennes ». Vous pouvez y parvenir en arrêtant le serveur Kafka, en supprimant les répertoires de journaux du sujet et en redémarrant le Kafka.

Les répertoires d'un sujet se trouvent dans le répertoire du journal, tel que spécifié par log.dir dans la configuration du courtier, avec un préfixe du nom du sujet.

+0

Merci pour la réponse. Le problème est que l'arrêt et le redémarrage du courtier Kafka et du serveur Zookeeper pour chaque test augmentent considérablement le temps d'exécution des tests. Peut-être que je pourrais éviter ce redémarrage d'une manière ou d'une autre? – Dmitriy

+0

Vous n'avez pas besoin de redémarrer Zookeeper, mais je pense que vous devez redémarrer Kafka afin de le laisser actualiser ses handles de fichiers. – alirabiee