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. Wenn Sie keins 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 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.
  • Git-Client
    • Unter Ubuntu können Sie sudo apt-get install git ausführen, um Git zu installieren.

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(s) 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-JAR(s) 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: