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é.
- Sur Ubuntu, exécutez
- Téléchargé et installé une archive binaire Maven.
- Sur Ubuntu, vous pouvez exécuter
apt-get install maven
pour installer Maven.
- Sur Ubuntu, vous pouvez exécuter
- Git
- Sur Ubuntu, vous pouvez exécuter
sudo apt-get install git
pour installer Git.
- Sur Ubuntu, vous pouvez exécuter
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 à partir de la ligne de commande, générez le fichier JAR, puis lancez l’exécution à partir de Maven (ou générez le fichier JAR avec Maven, puis lancez l’exécution dans Java en ajoutant les fichiers d’archive Java (JAR) Kafka nécessaires au chemin de classe) :
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 consommateur à partir de la ligne de commande, générez le fichier JAR, puis lancez l’exécution à partir de Maven (ou générez le fichier JAR avec Maven, puis lancez l’exécution dans Java en ajoutant les fichiers JAR Kafka nécessaires au chemin de classe) :
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 :