Je travaille quelques connecteurs Kafka et je ne vois aucune erreur dans leur création/déploiement dans la sortie de la console, mais je n'obtiens pas le résultat que je recherche ( aucun résultat que ce soit d'ailleurs, souhaité ou autre). J'ai créé ces connecteurs en fonction de l'exemple de connecteurs FileStream de Kafka, donc ma technique de débogage était basée sur l'utilisation du SLF4J Logger utilisé dans l'exemple. J'ai recherché le journal les messages que je pensais être produits dans la sortie de la console, mais en vain. Suis-je à la mauvaise place pour ces messages? Ou peut-être y a-t-il une meilleure façon de déboguer ces connecteurs?
Exemples d'utilisation du SLF4J Logger que j'ai référencé pour mon implémentation:
Je vais essayer de répondre à votre question de manière large. Un moyen simple de développer un connecteur peut être le suivant:
Rendez votre package de connecteurs disponible pour Kafka Connectez-vous de l'une des manières suivantes:
plugin.path
Dans les propriétés du travailleur Connect. Par exemple, si vos pots de connecteurs sont stockés dans /opt/connectors/my-first-connector
, Vous définirez plugin.path=/opt/connectors
Dans les propriétés de votre travailleur (voir ci-dessous).${CONFLUENT_HOME}/share/Java
. Par exemple: ${CONFLUENT_HOME}/share/Java/kafka-connect-my-first-connector
. (Doit commencer par le préfixe kafka-connect-
À récupérer par les scripts de démarrage). $ CONFLUENT_HOME est l'endroit où vous avez installé Confluent Platform.Si vous le souhaitez, augmentez votre journalisation en modifiant le niveau de journalisation de la connexion dans ${CONFLUENT_HOME}/etc/kafka/connect-log4j.properties
En DEBUG
ou même TRACE
.
Utilisez Confluent CLI pour démarrer tous les services, y compris Kafka Connect. Détails ici: http://docs.confluent.io/current/connect/quickstart.html
En bref: confluent start
Remarque: Le fichier de propriétés du travailleur Connect actuellement chargé par la CLI est
${CONFLUENT_HOME}/etc/schema-registry/connect-avro-distributed.properties
. C'est le fichier que vous devez modifier si vous choisissez d'activer l'isolation du chargement de classe, mais également si vous devez modifier les propriétés de votre travailleur Connect.
Une fois que le travailleur Connect est en cours d'exécution, démarrez votre connecteur en exécutant:
confluent load <connector_name> -d <connector_config.properties>
ou
confluent load <connector_name> -d <connector_config.json>
La configuration du connecteur peut être au format Java ou JSON).
Exécutez confluent log connect
Pour ouvrir le fichier journal du travailleur Connect, ou accédez directement à l'emplacement de stockage de vos journaux et données en exécutant
cd "$( confluent current )"
Remarque: changez l'emplacement de stockage de vos journaux et données au cours d'une session de Confluent CLI en définissant la variable d'environnement
CONFLUENT_CURRENT
De manière appropriée. Par exemple. étant donné que/opt/confluent
existe et est l'endroit où vous souhaitez stocker vos données, exécutez:
export CONFLUENT_CURRENT=/opt/confluent
confluent current
Enfin, pour déboguer de manière interactive votre connecteur, un moyen possible consiste à appliquer les éléments suivants avant de démarrer Connect with Confluent CLI:
confluent stop connect
export CONNECT_DEBUG=y; export DEBUG_SUSPEND_FLAG=y;
confluent start connect
puis connectez-vous avec votre débogueur (par exemple à distance au travailleur Connect (port par défaut: 5005). Pour arrêter l'exécution de la connexion en mode débogage, exécutez simplement: unset CONNECT_DEBUG; unset DEBUG_SUSPEND_FLAG;
lorsque vous avez terminé.
J'espère que ce qui précède rendra le développement de votre connecteur plus facile et ... plus amusant!
Le module de connecteur est exécuté par le framework de connecteur kafka. Pour le débogage, nous pouvons utiliser le mode autonome. Nous pouvons configurer IDE pour utiliser la fonction principale ConnectStandalone comme entrée point.
créer le débogage configurer comme suit. N'oubliez pas de cocher "Inclure les dépendances avec la portée" fournie "s'il s'agit d'un projet maven
le fichier de propriétés du connecteur doit spécifier le nom de classe de connecteur "connector.class" pour le débogage
j'aime la réponse acceptée. une chose - les variables d'environnement ne fonctionnaient pas pour moi ... j'utilise confluent community edition 5.3.1 ...
voici ce que j'ai fait qui a fonctionné ...
j'ai installé le cli confluent à partir d'ici: https://docs.confluent.io/current/cli/installing.html#tarball-installation
j'ai couru confluent en utilisant la commande confluent local start
j'ai obtenu les détails de l'application connect en utilisant la commande ps -ef | grep connect
j'ai copié la commande résultante dans un éditeur et ajouté l'argument (juste après Java):
-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005
puis j'ai arrêté de me connecter en utilisant la commande confluent local stop connect
puis j'ai exécuté la commande connect avec l'argument
bref entracte ---
vs développement de code est dirigé par erich gamma - de
gang of four
la renommée, qui a également écrit Eclipse. vs code devient une première classe Java ide voir https://en.wikipedia.org/wiki/Erich_Gamma
entracte sur ---
ensuite, j'ai lancé le code vs et ouvert le dossier du connecteur Oracle Debezium (cloné à partir d'ici) https://github.com/debezium/debezium-incubator
alors j'ai choisi Debug - Open Configurations
et entré la configuration de débogage en surbrillance
puis exécutez le débogueur - il atteindra vos points d'arrêt !!
la commande connect devrait ressembler à ceci:
/Library/Java/JavaVirtualMachines/jdk1.8.0_221.jdk/Contents/Home/bin/Java -agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005 -Xms256M -Xmx2G -server -XX:+UseG1GC -XX:MaxGCPauseMillis=20 -XX:InitiatingHeapOccupancyPercent=35 -XX:+ExplicitGCInvokesConcurrent -Djava.awt.headless=true -Dcom.Sun.management.jmxremote -Dcom.Sun.management.jmxremote.authenticate=false -Dcom.Sun.management.jmxremote.ssl=false -Dkafka.logs.dir=/var/folders/yn/4k6t1qzn5kg3zwgbnf9qq_v40000gn/T/confluent.CYZjfRLm/connect/logs -Dlog4j.configuration=file:/Users/myuserid/confluent-5.3.1/bin/../etc/kafka/connect-log4j.properties -cp /Users/myuserid/confluent-5.3.1/share/Java/kafka/*:/Users/myuserid/confluent-5.3.1/share/Java/confluent-common/*:/Users/myuserid/confluent-5.3.1/share/Java/kafka-serde-tools/*:/Users/myuserid/confluent-5.3.1/bin/../share/Java/kafka/*:/Users/myuserid/confluent-5.3.1/bin/../support-metrics-client/build/dependant-libs-2.12.8/*:/Users/myuserid/confluent-5.3.1/bin/../support-metrics-client/build/libs/*:/usr/share/Java/support-metrics-client/* org.Apache.kafka.connect.cli.ConnectDistributed /var/folders/yn/4k6t1qzn5kg3zwgbnf9qq_v40000gn/T/confluent.CYZjfRLm/connect/connect.properties