web-dev-qa-db-fra.com

Kafka bootstrap-servers vs zookeeper dans kafka-console-consumer

J'essaie de tester un seul noeud Kafka avec 3 courtiers et un gardien de zoo. Je souhaite tester en utilisant les outils de la console. Je dirige le producteur en tant que tel:

kafka-console-producer --broker-list localhost:9092,localhost:9093,localhost:9094 --topic testTopic

Ensuite, je lance le consommateur en tant que tel:

kafka-console-consumer --zookeeper localhost:2181 --topic testTopic --from-beginning

Et je peux entrer des messages chez le producteur et les voir chez le consommateur, comme prévu. Cependant , lorsque je lance la version mise à jour du consommateur à l'aide de bootstrap-server, je ne reçois rien. Par exemple

kafka-console-consumer --bootstrap-server localhost:9092,localhost:9093,localhost:9094 --topic testTopic --from-beginning

Cela fonctionnait bien quand un courtier fonctionnait sur le port 9092, alors je suis complètement dérouté. Y at-il un moyen de voir ce que zookeeper fournit en tant que serveur de démarrage? Le serveur de démarrage est-il différent de la liste de courtiers? Kafka compilé avec Scala 2.11.

7
nico

Je n'ai aucune idée de ce qui n'allait pas. J'ai probablement mis Kafka ou Zookeeper dans un état étrange. Après avoir supprimé les sujets dans le log.dir de chaque courtier ET les sujets de zookeeper dans /brokers/topics, puis recréé le sujet, le consommateur Kafka s'est comporté comme prévu.

6
nico

Les serveurs de démarrage sont les mêmes que les courtiers Kafka. Et si vous souhaitez voir la liste des serveurs d'amorce fournis par zookeeper, vous pouvez interroger les informations ZNode via n'importe quel client ZK. Tous les courtiers actifs sont enregistrés sous/brokers/ids/[brokerId]. Tout ce dont vous avez besoin est une adresse zkQuorum. La commande ci-dessous vous donnera la liste Des serveurs d'amorçage actifs:

./zookeeper-Shell.sh localhost: 2181 <<< "ls/brokers/ids" 

3
sam.ban

J'ai rencontré le même problème lorsque j'utilisais des versions incompatibles de:

  • Bibliothèques clientes Kafka
  • Scripts Kafka
  • Courtiers Kafka

Dans mon scénario exact, j’utilisais la version 0.10.2.1 de la bibliothèque cliente Confluent Kafka avec Confluent Platform 3.3.0 avec le courtier Kafka 0.11.0.0. Lorsque j'ai abaissé ma plate-forme Confluent à la version 3.3.2, qui correspond à mes bibliothèques clientes, le consommateur a fonctionné comme prévu.

Ma théorie est que le dernier consommateur kafka-console utilisant la nouvelle API consommateur ne récupérait que les messages au format le plus récent. Un certain nombre de changements de format de message ont été introduits dans Kafka 0.11.0.0.

0
Sean Glover