Utilisation d’Apache Flink avec Azure Event Hubs pour Apache Kafka

Ce tutoriel vous montre comment connecter Apache Flink à un Event Hub sans modifier vos protocoles clients ni exécuter vos propres clusters. Pour plus d'informations sur la prise en charge par Event Hubs du protocole consommateur Apache Kafka, consultez Event Hubs pour Apache Kafka.

Dans ce tutoriel, vous allez apprendre à :

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

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.7+
    • 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 obtenir des instructions sur la création d’un espace de noms et d’un Event Hub, consultez Créer un Event Hub. 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 flink :

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

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

Fournir un point de terminaison Event Hubs Kafka

producer.config

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

bootstrap.servers={YOUR.EVENTHUBS.FQDN}:9093
client.id=FlinkExampleProducer
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="FlinkTestProducer"

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.

À 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.config

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

bootstrap.servers={YOUR.EVENTHUBS.FQDN}:9093
group.id=FlinkExampleConsumer
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="FlinkTestConsumer"

Si l’Event Hub a 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.

Extraire le Guide de connecteur Kafka de Flink pour plus d’informations sur la connexion Flink à Kafka.

Étapes suivantes

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