Verwenden von Akka Streams mit Event Hubs für Apache Kafka
Dieses Tutorial zeigt, wie Sie Akka Streams über Event Hubs-Unterstützung für Apache Kafka verbinden, ohne Ihre Protokollclients zu ändern oder Ihre eigenen Cluster auszuführen.
In diesem Tutorial lernen Sie Folgendes:
- Erstellen eines Event Hubs-Namespace
- Klonen des Beispielprojekts
- Ausführen des Akka Streams-Producers
- Ausführen des Akka Streams-Consumers
Hinweis
Dieses Beispiel ist auf GitHub verfügbar.
Voraussetzungen
Stellen Sie vor dem Durchführen dieses Tutorials sicher, dass die folgenden Voraussetzungen erfüllt sind:
- Lesen Sie den Artikel Event Hubs für Apache Kafka.
- Ein Azure-Abonnement. Falls Sie kein Abonnement besitzen, können Sie ein kostenloses Konto erstellen, bevor Sie beginnen.
- Java Development Kit (JDK) 1.8 oder höher
- Führen Sie unter Ubuntu
apt-get install default-jdk
aus, um das JDK zu installieren. - Achten Sie darauf, dass die Umgebungsvariable „JAVA_HOME“ auf den Ordner verweist, in dem das JDK installiert ist.
- Führen Sie unter Ubuntu
- Führen Sie den Download und die Installation eines binären Maven-Archivs durch.
- Unter Ubuntu können Sie
apt-get install maven
ausführen, um Maven zu installieren.
- Unter Ubuntu können Sie
- Git-Client
- Unter Ubuntu können Sie
sudo apt-get install git
ausführen, um Git zu installieren.
- Unter Ubuntu können Sie
Erstellen eines Event Hubs-Namespace
Ein Event Hubs-Namespace ist erforderlich, um Nachrichten an einen Event Hubs-Dienst zu senden oder von diesem zu empfangen. Ausführliche Informationen finden Sie unter Erstellen eines Event Hubs. Kopieren Sie die Event Hubs-Verbindungszeichenfolge zur späteren Verwendung.
Klonen des Beispielprojekts
Nachdem Sie nun über eine Event Hubs-Verbindungszeichenfolge verfügen, können Sie das Azure Event Hubs für Kafka-Repository klonen und zum Unterordner akka
navigieren:
git clone https://github.com/Azure/azure-event-hubs-for-kafka.git
cd azure-event-hubs-for-kafka/tutorials/akka/java
Ausführen des Akka Streams-Producers
Verwenden Sie das bereitgestellte Beispiel des Akka Streams-Producers, und senden Sie Nachrichten an den Event Hubs-Dienst.
Bereitstellen eines Kafka-fähigen Event Hubs-Endpunkts
„application.conf“ des Producers
Update der bootstrap.servers
- und sasl.jaas.config
-Werte in producer/src/main/resources/application.conf
zur Weiterleitung des Producers an den Kafka-fähigen Event Hubs-Endpunkt mit der richtigen Authentifizierung.
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}\";"
}
}
Wichtig
Ersetzen Sie {YOUR.EVENTHUBS.CONNECTION.STRING}
durch die Verbindungszeichenfolge für Ihren Event Hubs-Namespace. Anweisungen zum Abrufen der Verbindungszeichenfolge finden Sie unter Abrufen einer Event Hubs-Verbindungszeichenfolge. Hier sehen Sie eine Beispielkonfiguration: sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="$ConnectionString" password="Endpoint=sb://mynamespace.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=XXXXXXXXXXXXXXXX";
Ausführen des Producers über die Befehlszeile
Zum Ausführen des Producers über die Befehlszeile generieren Sie die JAR-Datei. Führen Sie sie innerhalb von Maven aus (oder generieren Sie die JAR-Datei mit Maven, und führen Sie sie dann durch Hinzufügen der erforderlichen Kafka-JAR (Java Archive) an den Klassenpfad in Java aus):
mvn clean package
mvn exec:java -Dexec.mainClass="AkkaTestProducer"
Der Producer beginnt mit dem Senden von Ereignissen an den Event Hub zum Thema test
und druckt die Ereignisse an „stdout“.
Ausführen des Akka Streams-Consumers
Verwenden Sie das bereitgestellte Consumer-Beispiel, und empfangen Sie Nachrichten vom Event Hub.
Bereitstellen eines Kafka-fähigen Event Hubs-Endpunkts
„application.conf“ des Consumers
Aktualisieren Sie die bootstrap.servers
- und sasl.jaas.config
-Werte in consumer/src/main/resources/application.conf
zur Weiterleitung des Consumers an den Kafka-fähigen Event Hubs-Endpunkt mit der richtigen Authentifizierung.
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}\";"
}
}
Wichtig
Ersetzen Sie {YOUR.EVENTHUBS.CONNECTION.STRING}
durch die Verbindungszeichenfolge für Ihren Event Hubs-Namespace. Anweisungen zum Abrufen der Verbindungszeichenfolge finden Sie unter Abrufen einer Event Hubs-Verbindungszeichenfolge. Hier sehen Sie eine Beispielkonfiguration: sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="$ConnectionString" password="Endpoint=sb://mynamespace.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=XXXXXXXXXXXXXXXX";
Ausführen des Consumers über die Befehlszeile
Zum Ausführen des Consumers über die Befehlszeile generieren Sie die JAR-Datei, und führen Sie sie innerhalb von Maven aus (oder generieren Sie die JAR-Datei mit Maven, und führen Sie sie dann durch Hinzufügen der erforderlichen Kafka-JARs an den Klassenpfad in Java aus):
mvn clean package
mvn exec:java -Dexec.mainClass="AkkaTestConsumer"
Wenn der Event Hub über Ereignisse verfügt (wenn z. B. der Producer auch ausgeführt wird), erhält der Consumer jetzt Ereignisse aus dem Thema test
.
Ausführlichere Informationen zu Akka Streams finden Sie im Akka Streams-Kafka-Handbuch.
Nächste Schritte
Weitere Informationen zu Event Hubs für Kafka finden Sie in folgenden Artikeln: