Utilisation d’Akka Streams avec Event Hubs pour Apache Kafka

Ce tutoriel vous montre comment connecter Akka Streams grâce à la prise en charge d’Event Hubs pour Apache Kafka sans modifier vos protocoles clients ni exécuter vos propres clusters.

Dans ce tutoriel, vous allez apprendre à :

  • Créer un espace de noms Event Hubs
  • Cloner l’exemple de projet
  • Exécuter le producteur d’Akka Streams
  • Exécuter le consommateur d’Akka Streams

Notes

Cet exemple est disponible sur GitHub.

Prérequis

Pour suivre ce tutoriel, vérifiez que les conditions préalables ci-dessous sont bien remplies :

  • Lisez l’article Event Hubs pour Apache Kafka.
  • Un abonnement Azure. Si vous n’en avez pas, créez un compte gratuit avant de commencer.
  • Java Development Kit (JDK) 1.8+
    • Sur Ubuntu, exécutez apt-get install default-jdk pour installer le JDK.
    • Veillez à définir la variable d’environnement JAVA_HOME pour qu’elle pointe vers le dossier dans lequel le JDK est installé.
  • Téléchargé et installé une archive binaire Maven.
    • Sur Ubuntu, vous pouvez exécuter apt-get install maven pour installer Maven.
  • Git
    • Sur Ubuntu, vous pouvez exécuter sudo apt-get install git pour installer Git.

Créer un espace de noms Event Hubs

Un espace de noms Event Hubs est requis pour échanger avec tout service Event Hubs. Pour plus d’informations, consultez Créer un hub d’événements. Veillez à copier la chaîne de connexion Event Hubs pour une utilisation ultérieure.

Cloner l’exemple de projet

Maintenant que vous disposez d’une chaîne de connexion Event Hubs, clonez le dépôt Azure Event Hubs pour Kafka, puis accédez au sous-dossier akka :

git clone https://github.com/Azure/azure-event-hubs-for-kafka.git
cd azure-event-hubs-for-kafka/tutorials/akka/java

Exécuter le producteur d’Akka Streams

À l’aide de l’exemple du producteur de flux Akka fourni, envoyez des messages au service Event Hubs.

Fournir un point de terminaison Event Hubs Kafka

Producer application.conf

Mettez à jour des valeurs bootstrap.servers et sasl.jaas.config dansproducer/src/main/resources/application.conf pour diriger le producteur vers le point de terminaison Event Hubs Kafka avec l’authentification correcte.

akka.kafka.producer {
    #Akka Kafka producer properties can be defined here


    # Properties defined by org.apache.kafka.clients.producer.ProducerConfig
    # can be defined in this configuration section.
    kafka-clients {
        bootstrap.servers="{YOUR.EVENTHUBS.FQDN}:9093"
        sasl.mechanism=PLAIN
        security.protocol=SASL_SSL
        sasl.jaas.config="org.apache.kafka.common.security.plain.PlainLoginModule required username=\"$ConnectionString\" password=\"{YOUR.EVENTHUBS.CONNECTION.STRING}\";"
    }
}

Important

Remplacez {YOUR.EVENTHUBS.CONNECTION.STRING} par la chaîne de connexion de votre espace de noms Event Hubs. Pour savoir comment obtenir la chaîne de connexion, consultez Obtenir une chaîne de connexion Event Hubs. Voici un exemple de configuration : sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="$ConnectionString" password="Endpoint=sb://mynamespace.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=XXXXXXXXXXXXXXXX";

Exécuter le producteur depuis la ligne de commande

Pour exécuter le producteur depuis la ligne de commande, générez le fichier JAR, puis exécutez depuis Maven (ou générez le fichier JAR avec Maven, puis exécutez dans Java en ajoutant le ou les fichiers JAR Kafka au paramètre classpath) :

mvn clean package
mvn exec:java -Dexec.mainClass="AkkaTestProducer"

le producteur va maintenant commencer à envoyer des événement à l’Event Hub au niveau de la rubrique test et imprimer les événements dans stdout.

Exécuter le consommateur d’Akka Streams

À l’aide de l’exemple de contrôle serveur consommateur fourni, recevez des messages à partir de l’Event Hub.

Fournir un point de terminaison Event Hubs Kafka

Consumer application.conf

Mettez à jour des valeurs bootstrap.servers et sasl.jaas.config dansconsumer/src/main/resources/application.conf pour diriger le contrôle serveur consommateur vers le point de terminaison Event Hubs Kafka avec l’authentification correcte.

akka.kafka.consumer {
    #Akka Kafka consumer properties defined here
    wakeup-timeout=60s

    # Properties defined by org.apache.kafka.clients.consumer.ConsumerConfig
    # defined in this configuration section.
    kafka-clients {
       request.timeout.ms=60000
       group.id=akka-example-consumer

       bootstrap.servers="{YOUR.EVENTHUBS.FQDN}:9093"
       sasl.mechanism=PLAIN
       security.protocol=SASL_SSL
       sasl.jaas.config="org.apache.kafka.common.security.plain.PlainLoginModule required username=\"$ConnectionString\" password=\"{YOUR.EVENTHUBS.CONNECTION.STRING}\";"
    }
}

Important

Remplacez {YOUR.EVENTHUBS.CONNECTION.STRING} par la chaîne de connexion de votre espace de noms Event Hubs. Pour savoir comment obtenir la chaîne de connexion, consultez Obtenir une chaîne de connexion Event Hubs. Voici un exemple de configuration : sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="$ConnectionString" password="Endpoint=sb://mynamespace.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=XXXXXXXXXXXXXXXX";

Exécuter le contrôle serveur consommateur depuis la ligne de commande

Pour exécuter le contrôle serveur consommateur depuis la ligne de commande, générez le fichier JAR, puis exécutez depuis Maven (ou générez le fichier JAR avec Maven, puis exécutez dans Java en ajoutant le ou les fichiers JAR Kafka au paramètre classpath) :

mvn clean package
mvn exec:java -Dexec.mainClass="AkkaTestConsumer"

Si l’Event Hub contient des événements (par exemple, si votre producteur est également en cours d’exécution), le contrôle serveur consommateur commence maintenant à recevoir les événements provenant de la rubrique test.

Consultez le Guide Kafka de flux Akka pour plus d’informations sur les flux Akka.

Étapes suivantes

Pour plus d’informations sur Event Hubs pour Kafka, consultez les articles suivants :