Comment vérifier si Kafka Serveur est en cours d'exécution?
Je veux m'assurer que kafka serveur est en cours d'exécution ou non avant le démarrage de la production et de la consommation des emplois. C'est dans l'environnement de windows et voici mon kafka du serveur de code dans eclipse...
Properties kafka = new Properties();
kafka.setProperty("broker.id", "1");
kafka.setProperty("port", "9092");
kafka.setProperty("log.dirs", "D://workspace//");
kafka.setProperty("zookeeper.connect", "localhost:2181");
Option<String> option = Option.empty();
KafkaConfig config = new KafkaConfig(kafka);
KafkaServer server = new KafkaServer(config, new CurrentTime(), option);
server.startup();
Dans ce cas if (server != null)
n'est pas suffisant, car il est toujours vrai. Donc, il y a aucun moyen de savoir que mon kafka serveur est en cours d'exécution et prêt pour le producteur. Il est nécessaire pour moi de vérifier, car cela provoque la perte de quelques paquets de données.
Grâce.
- Quel système d'exploitation utilisez-vous?
- J'ai mis à jour ma question.
Vous devez vous connecter pour publier un commentaire.
Tous Kafka courtiers doivent être attribués à un
broker.id
. Au démarrage d'un courtier va créer un éphémère nœud dans Zookeeper avec un chemin de/broker/ids/$id
. Comme le nœud est éphémère, elle sera supprimée dès que le courtier se déconnecte, par exemple en fermant.Vous pouvez afficher la liste de l'éphémère, courtier nœuds comme suit:
echo dump | nc localhost 2181 | grep brokers
La Gardienne de l'interface client expose un certain nombre de commandes;
dump
listes de toutes les sessions et éphémère des nœuds du cluster.Note, le ci-dessus suppose:
2181
) surlocalhost
, et quelocalhost
est le chef de file du clusterzookeeper.connect
Kafka config ne spécifie pas de chroot env pour votre Kafka cluster c'est à dire c'est justehost:port
et pashost:port/path
J'ai utilisé le AdminClient api.
Paul réponse est très bon et c'est en fait la façon dont Kafka & Zk travailler ensemble à partir d'un courtier point de vue.
Je dirais qu'une autre option facile de vérifier si un Kafka serveur est en cours d'exécution est de créer une simple KafkaConsumer pointant vers le cluste et d'essayer un peu d'action, par exemple, listTopics(). Si kafka serveur n'est pas en cours d'exécution, vous obtiendrez un TimeoutException et puis vous pouvez utiliser un
try-catch
phrase.kafka-topics.bat --list
et j'ai obtenu tous les sujets. Il semble que seule la liste des sujets n'a pas pu vérifier que Kafka est en cours d'exécution.La bonne option est d'utiliser AdminClient comme ci-dessous avant de commencer à produire ou à consommer les messages
vous pouvez utiliser le code ci-dessous pour vérifier les courtiers disponibles si le serveur est en cours d'exécution.
J'ai trouvé un événement
OnError
dans confluentes Kafka:Et sa documentation dans le code:
Pour Linux, "ps aux | grep kafka" voir si kafka propriétés sont affichées dans les résultats. E. g. /chemin/vers/kafka/serveur.propriétés