Passer au contenu principal

Configuration du connecteur Apache Kafka WSO2 avec WSO2 Micro Integrator

Kafka Process Flow

Dans ce tutoriel, nous aborderons la configuration du connecteur Apache Kafka WSO2 avec WSO2 Micro Integrator. Pour y parvenir, nous commencerons par observer les composants nécessaires à la configuration, les étapes nécessaires à l’installation, puis nous configurerons l’environnement ainsi que les options suivantes en vue de créer et de déployer une application. Pour finir, nous mettrons à l’essai le processus total.

Pour cela, il convient de respecter l’index ci-dessous:

  1. Composants nécessaries á la configuration
  2. Présentation de l’arquitecture 
    1. Étapes de notre processus
  3. Téléchargement et configuration connecteur Apache Kafka, WSO2 Micro Integrator et WSO2 Integration Studio
    1. Télécharger les composants
    2. Configurer les composants
  4. Création d’un projet dans WSO2 Integration Studio [durée de conception]
    1. Créer le service proxy dans WSO2 Studio
    2. Exportation de la logique d’interprétation en tant qu’application C (application Carbon)
    3. Ajouter un connecteur Kafka à un projet
    4. Construire l’archive du projet: [*.car]
  5. Démarrage de Micro Integrator [durée d’exécution]
    1. Lancer le runtime de MI avec l’outil CLI
  6. Déploiement sur le runtime
    1. Déployer l’application
    2. Vérifier que les services de proxy déployés sont exécutés à l’aide de l’outil CLI
  7. Réalisation de tests pour vérifier que le processus de bout en bout fonctionne
    1. Envoyer la demande client à l’aide de la commande CURL
    2. Envoyer la demande client à l’aide du client HTTP interne dans Studio
    3. Envoyer la demande client à l’aide de SOAP UI
  8. Conclusions

1. Composants nécessaires à la configuration

  • Apache Kafka: [Ver. kafka_2.12–1.0.0]

Apache Kafka est un système d’envoi de messages distribué rapide, très échelonnable via un modèle publication-abonnement. Il présente une excellente disponibilité, une bonne résistance aux pannes de nœuds et prend en charge la récupération automatique. Apache Kafka met en œuvre des rubriques capables de traiter un grand volume de données et dispose d’un outil capable de transmettre les messages d’un terminal à un autre. Apache Kafka est adapté à la consommation de messages en ligne et hors ligne. Apache Kafka est intégré au service de synchronisation Apache ZooKeeperTM. Tous les messages Kafka sont répartis en rubriques.

  • Connecteur WSO2 Apache Kafka: [Ver. 3.0.0]

Le connecteur Kafka WSO2 permet d’accéder à l’API productrice Kafka via WSO2 EI. Par conséquent, le connecteur Kafka se comporte comme un producteur de messages et facilite la publication de messages à partir de WSO2 EI sur les rubriques Kafka. Terminal d’entrée : Le terminal d’entrée Kafka agit comme un consommateur de messages pour Kafka. Il reçoit des messages à partir de rubriques configurés de la plateforme Kafka et les injecte dans le processus de médiation.

  • WSO2 Integration Studio: [Ver. 7.2.0]

WSO2 Integration Studio est un environnement développement graphique pour WSO2 Enterprise Integrator. Il fournit des services de développement d’artefact d’intégration efficaces et permet d’accélérer les cycles de vie du développement.

  • WSO2 Micro Integrator: [Ver. wso2mi-1.2.0]

WSO2 Micro Integrator est une infrastructure d’intégration native cloud dotée d’un concepteur de processus d’intégration glisser et déplacer graphique et d’un runtime basé sur la configuration visant l’intégration d’API, de services, de données et de systèmes SaaS, propriétaires et hérités.

Il repose sur le même runtime largement adopté et éprouvé WSO2 EI/WSO2 ESB utilisé dans les versions précédentes. Il a été optimisé pour les déploiements natifs conteneurs basés sur Docker et Kubernetes.

Micro Integrator prend en charge les styles d’architectures centralisés (style ESB) et décentralisés (microservices, natif cloud).

  • SOAP-UI : [Ver. 5.5.0]

SoapUI est le leader mondial des outils de test fonctionnel pour les tests SOAP et REST. Grâce à son interface graphique simple d’utilisation et à ses fonctionnalités adaptées aux besoins des professionnels, SoapUI permet de créer et exécuter des tests de charge, de régression et fonctionnels rapidement et en toute simplicité. SoapUI fournit, dans un seul environnement de test, une couverture de test complète des services web basés sur SOAP et REST, aux couches d’envoi de messagers d’entreprise JMS en passant par les bases de données, les applications Internet riches et bien plus.

2. Présentation de l’architecture

Le diagramme suivant décrit la relation entre le serveur Apache Kafka, WSO2 Micro Integrator (avec le connecteur Apache Kafka) et le client basé sur SoapUI.

2.1 Étapes de notre processus:

Dans notre scénario/exercice, nous utiliserons le client SoapUI pour envoyer une demande de message au service de proxy WSO2, qui publie en interne un message sur la rubrique Kafka situé sur le serveur Apache Kafka.

3. Téléchargement et configuration du connecteur Apache Kafka, WSO2 Micro Integrator et WSO2 Integration Studio

3.1 Télécharger les composants

  • Télécharger et extraire WSO2 Micro Integrator ici
  • Nous ferons référence à ce répertoire en tant que <MI_HOME>
  • Télécharger WSO2 Integration Studio ici
  • Télécharger et extraire Apache Kafka ici
  • Nous ferons référence à ce répertoire en tant que <KAFKA_HOME>

3.2 Configurer les composants

Suivez les instructions suivantes pour configurer les composants :

1.Copier les bibliothèques client suivantes à partir de <KAFKA_HOME>/lib vers <MI_HOME>/lib

  • 12–1.0.0.jar,
  • kafka-clients-1.0.0.jar,
  • metrics-core-2.2.0.jar,
  • scala-library-2.12.3.jar,
  • zkclient-0.10.jar &
  • zookeeper-3.4.10.jar.

2. Se rendre dans <KAFKA_HOME>/bin et exécuter la commande suivante pour démarrer ZooKeeper.

      ./zookeeper-server-start.sh config/zookeeper.properties

3. Dans une autre console, se rendre dans <KAFKA_HOME>/bin et exécuter la commande suivante pour démarrer le serveur broker ZooKeeper.

./kafka-server-start.sh config/server.properties

4. Création d’un projet dans WSO2 Integration Studio [durée de conception]

4.1 Créer le service proxy dans WSO2 Integration Studio

Suivez les étapes suivantes pour créer le service proxy dans WSO2 Integration Studio :

1.Créer un projet de solution ESB et y ajouter le connecteur Kafka WSO2.

File > New > Integration Project (Fichier > Nouveau > Projet d’intégration).

2. Donner au projet d’intégration le nom « MyKafkaConnectionProject » et cliquer sur Finish (Terminer).

3. Faire clic droit sur le nom du projet (nœud : MyKafkaConnectionProjectConfig) et sélectionner l’option « Add or Remove Connector/Module » (Ajouter ou supprimer le connecteur/module) comme indiqué ci-dessous:

4. Sélectionner l’option « Add connector/module » (Ajouter un connecteur/module) :

5. Rechercher le connecteur « Kafka » et cliquer sur l’icône « download » (télécharger).

 6. Cliquer sur OK lorsque la fenêtre contextuelle apparaît à l’écran pour télécharger le connecteur dans votre espace de travail.

  7. Cliquer sur « OK », puis cliquer sur « Finish » (Terminer) dans l’écran « Add or Remove Connectors/Modules » (Ajouter ou supprimer des connecteurs/modules).

  8. Un fichier de configuration de proxy avec les détails suivants est nécessaire pour créer un service proxy à l’étape suivante :

  • bootstrapServers,
  • topic,
  • maxPoolSize,
  • keySerializerClass  & valueSerializerClass

Créer un fichier intitulé « kafkaProxyService.xml » dans votre système de fichiers local avec le contenu suivant:

<?xml version="1.0" encoding="UTF-8"?>

<proxy name="kafkaProxyService" startOnLoad="true" transports="https http" xmlns="http://ws.apache.org/ns/synapse">

    <target>

        <inSequence>

            <kafkaTransport.init>

                <bootstrapServers>localhost:9092</bootstrapServers>

               <keySerializerClass>org.apache.kafka.common.serialization.StringSerializer</keySerializerClass>

                 <valueSerializerClass>org.apache.kafka.common.serialization.StringSerializer</valueSerializerClass>

                <maxPoolSize>100</maxPoolSize>

            </kafkaTransport.init>

            <kafkaTransport.publishMessages>

                <topic>MyKafkaTopic</topic>

            </kafkaTransport.publishMessages>

        </inSequence>

        <outSequence/>

        <faultSequence/>

    </target>

</proxy>

9. Une fois le connecteur ajouté, faire un clic droit sur le nom du projet et sélectionner New > Proxy service (Nouveau > Service proxy)

10. Sélectionner « Import Proxy Service » (Importer un service proxy) et cliquer sur Next (Suivant).

 

11. Créer une référence à « kafkaProxyService.xml » à partir du système de fichier local préparé à l’étape 7.

12. Basculer vers la vue de conception et vérifier la configuration.

4.2 Exportation de la logique d’interprétation en tant qu’application C (application Carbon)

[Remarque : cela créera un paramètre fictif pour les bibliothèques de connecteurs dans le même projet]

Une application C est un artefact déployable sur le runtime Micro Integrator. Nous pouvons exporter la logique d’interprétation que nous avons conçue dans l’application C avec le connecteur. Nous pouvons ensuite exporter le l’API et le connecteur importé dans une unique application CAR.

L’application CAR doit être déployée pendant la durée d’exécution du serveur [l’application C est également connue sous le nom de « Composite Application » dans les dernières versions]. Pour grouper le connecteur dans une application C, il est nécessaire de créer un projet Connector Exporter:

  1. Naviguer vers File > New > Other > WSO2 > Extensions > Project Types > ‘Connector Exporter’ Project (Fichier > Nouveau > Autres > WSO2 > Extensions > Types de projets > Projet « Connector Exporter »).

Step 2: Donner un nom au projet, par exemple « KafkaConnectorExportProject », puis cliquer sur Finish (Terminer).

Step 3: Indiquer le parent à partir de l’espace de travail et sélectionner le projet d’intégration spécifique que vous avez créé à partir de la liste déroulante.

4.3 Ajouter un connecteur Kafka à un projet

[Remarque : Ajouter les bibliothèques de connecteur Kafka dans le paramètre fictif créé lors de la dernière étape]

1. Il faut à présent ajouter le connecteur au projet Connector Exporter que vous venez de créer. Faire clic droit sur le projet Connector Exporter et sélectionner, New > Add Remove Connectors > (Nouveau > Ajouter/Supprimer des connecteurs >)

2. Add Connector/module > Next (Ajouter un connecteur/module > Suivant)

3. Add from Workspace > Select Connector (Ajouter à partir de l’espace de travail > Sélectionner connecteur)

4. Cliquer sur l’espace de travail.

5. Sélectionner le connecteur et cliquer sur « OK ».

6. Cliquer sur « Finish » (Terminer).

7. Nous pouvons voir que les fichiers de la bibliothèque de connecteur Kafka respectifs se sont propagés dans le projet.

4.4 Construire l’archive du projet : [*.car]

1. Faire clic droit sur le projet intitulé CompositeApplication et exporter « Carbon Application Archive » dans wso2mi-                  1.2.0/micro-integrator/repository/deployment/server/carbonapps.

2. Spécifier un répertoire cible, par exemple « /tmp/*.car »,

3.« Select All » (Tout sélectionner) et cliquer sur « Finish » (Terminer).

5. Démarrage de Micro Integrator [durée d’exécution]

5.1 Lancer le runtime de MI avec l’outil CLI 

  1. Naviguer vers <MI_HOME>/bin et exécuter la commande suivante.
  2. Sous MacOS/Linux/CentOS : « sh micro-integrator.sh –DenableManagementApi »

6. Déploiement sur le runtime

6.1 Déployer l’application

1. Déployer l’application en faisant glisser déposer le fichier .car dans le dossier de déploiement MI comme indiqué.

2. La console du runtime MI affichera que le déploiement de l’application a réussi.

6.2 Vérifier que les services de proxy déployés sont exécutés à l’aide de l’outil CLI

1. Commencer par exporter le CHEMIN D’ACCÈS comme indiqué ci-dessous,

$export PATH=/<MI-CLI-HOME>/bin:$PATH

$ export PATH=/opt/WSO2/wso2mi-cli-1.2.0/bin/bin:$PATH

2. Se connecter à l’outil CLI,  [Informations de connexion par défaut : admin/admin]

“./mi remote login”

3. Vérifier les services proxy.

“./mi proxyservice show”

4. Dans ce scénario, il indique ce qui suit.

http://SWAPNILs-MacBook-Pro.local:8290/services/KafkaTransport?wsdl

5. [En interne, il tente de se connecter à https://localhost:9164/management/login]

6. Vérifier les services API.

“./mi api show”

Dans ce scénario, il indique ce qui suit, http://localhost:8290/publishMessages

7. À présent, créer une rubrique intitulée « test » avec une seule partition et un seul réplica.

Naviguer vers <KAFKA_HOME>/bin et exécuter la commande suivante,

./kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic test

7. Réalisation de tests pour vérifier que le processus de bout en bout fonctionne

À cette étape, nous enverrons un message au broker Kafka via les sujets Kafka en utilisant les clients (WSO2 Integration Studio et SOAP-UI) pour vérifier que le message est publié sur le serveur Kafka.

7.1 Envoyer la demande client à l’aide de la commande CURL

1. Utiliser la commande CURL pour envoyer une demande.

curl -X POST -d '{"name":"Hello Kafka World!!"}'

“http://localhost:8290/publishMessages” -H “Content-Type:application/json” -v

2. Nous verrons ensuite le message publié sur le serveur Kafka en exécutant la commande suivante :

“bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning”

3. Vous obtiendrez une réponse comme indiqué ci-dessous, qui confirme que le flux de message de bout en bout est correctement effectué.

 {“name”:” Hello Kafka World!!”}

7.2 Envoyer la demande client à l’aide du client HTTP interne dans Studio

1. Dans WSO2 Integration Studio, cliquer sur « Server Configuration » (Configuration du serveur) pour effectuer un test en comparaison avec le Micro Integrator intégré,

Propager les bibliothèques Kafka comme indiqué + terminal d’entrée Kafka « org.apache.synapse.kafka.poll-1.0.10.jar » à partir du magasin du connecteur en recherchant Kafka.

2. Configurer Carbon-Home dans l’écran « Debug Configuration » (Configuration de débogage) comme indiqué ci-dessous,

         Dans ce cas, le répertoire de travail est  ? /opt/WSO2/wso2mi-1.2.0/micro-integrator

 3. Ouvrir l’onglet « HTTP Client » (Client HTTP) disponible dans l’onglet Console, propager les détails et exécuter. Nous devrions recevoir une réponse HTTP 200 pour confirmer que l’appel de service a été effectué avec succès.

4. La prochaine étape abordée concerne le récepteur.

7.3 Envoyer la demande client à l’aide de SOAP UI

1. Vérifier les services proxy.

“./mi proxyservice show”

2. Dans ce scénario, il indique ce qui suit.

http://swapnils-macbook-pro.local:8290/services/WeatherDataPublishService.W……?wsdl

3. Créer un projet SOAP dans SoapUI et configurer le WSDL ci-dessus,

4. Compléter la charge utile/le corps comme indiqué et exécuter. Vous recevrez une réponse HTTP 200 provenant du service et indiquant le succès de l’opération, comme indiqué ci-après:

5. Dans une session de console « topic consumer » (client rubrique) (en utilisant comme rubrique : weatherdatatopic), vous serez capable de consulter le message précédemment envoyé. Vous pourrez démarrer une session de console client en utilisant la commande suivante :

       “./kafka-console-consumer.sh –topic weatherdatatopic –bootstrap-server=localhost:9092

8. Conclusions

Dans le cadre de cet article, vous avez :

  • Appris à configurer Apache Kafka et le connecteur Kafka WSO2 avec WSO2 Micro Integrator.
  • Conçu un processus dans WSO2 pour publier un message sur un sujet Kafka.
  • Créé un client à l’écoute d’une rubrique donnée dans Apache Kafka.
  • Utilisé plusieurs clients (client HTTP/CURL dans Studio/SOAP-UI) pour appeler le processus WSO2.
  • Pour finir, nous avons vérifié qu’un message similaire a été reçu par le client Kafka à l’écoute sur la même rubrique.