Använda Akka Streams med Event Hubs för Apache Kafka

Den här självstudien visar hur du ansluter Akka Streams via Event Hubs-stöd för Apache Kafka utan att ändra dina protokollklienter eller köra dina egna kluster.

I den här guiden får du lära dig att:

  • Skapa ett Event Hubs-namnområde
  • Klona exempelprojektet
  • Köra Akka Streams-producent
  • Köra Akka Streams-konsument

Anteckning

Det här exemplet finns på GitHub

Förutsättningar

Kontrollera att du har följande förutsättningar för att slutföra den här självstudien:

  • Läs artikeln Event Hubs för Apache Kafka.
  • En Azure-prenumeration. Om du inte har ett konto kan du skapa ett kostnadsfritt konto innan du börjar.
  • Java Development Kit (JDK) 1.8+
    • I Ubuntu kör du apt-get install default-jdk för att installera JDK-paketet.
    • Tänk på att ställa in miljövariabeln JAVA_HOME så att den pekar på den mapp där JDK-paketet är installerat.
  • Ladda ned och installera ett binärt Maven-arkiv
    • I Ubuntu kan du köra apt-get install maven för att installera Maven.
  • Git
    • I Ubuntu kan du köra sudo apt-get install git för att installera Git.

Skapa ett Event Hubs-namnområde

Ett Event Hubs-namnområde krävs för att skicka eller ta emot från en Event Hubs-tjänst. Mer information finns i Skapa en händelsehubb . Se till att kopiera Event Hubs-anslutningssträngen för senare användning.

Klona exempelprojektet

Nu när du har en Event Hubs-anslutningssträng klonar du Azure Event Hubs för Kafka-lagringsplatsen och navigerar till undermappenakka:

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

Köra Akka Streams-producent

Med hjälp av det angivna Akka Streams-producentexemplet skickar du meddelanden till Event Hubs-tjänsten.

Ange en Event Hubs Kafka-slutpunkt

Producentprogram.conf

bootstrap.servers Uppdatera värdena och sasl.jaas.config i producer/src/main/resources/application.conf för att dirigera producenten till Event Hubs Kafka-slutpunkten med rätt autentisering.

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}\";"
    }
}

Viktigt

Ersätt {YOUR.EVENTHUBS.CONNECTION.STRING} med anslutningssträngen för Event Hubs-namnområdet. Anvisningar om hur du hämtar anslutningssträngen finns i Hämta en Event Hubs-anslutningssträng. Här är en exempelkonfiguration: sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="$ConnectionString" password="Endpoint=sb://mynamespace.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=XXXXXXXXXXXXXXXX";

Kör producent från kommandoraden

Om du vill köra producenten från kommandoraden genererar du JAR-filen och kör sedan inifrån Maven (eller genererar JAR-filen med Maven och kör sedan i Java genom att lägga till nödvändiga Kafka JAR:er i klassökvägen):

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

Producenten börjar skicka händelser till händelsehubben i ämnet testoch skriver ut händelserna till stdout.

Köra Akka Streams-konsument

Med hjälp av det tillhandahållna konsumentexemplet tar du emot meddelanden från händelsehubben.

Ange en Event Hubs Kafka-slutpunkt

Konsumentprogram.conf

bootstrap.servers Uppdatera värdena och sasl.jaas.config i consumer/src/main/resources/application.conf för att dirigera konsumenten till Event Hubs Kafka-slutpunkten med rätt autentisering.

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}\";"
    }
}

Viktigt

Ersätt {YOUR.EVENTHUBS.CONNECTION.STRING} med anslutningssträngen för Event Hubs-namnområdet. Anvisningar om hur du hämtar anslutningssträngen finns i Hämta en Event Hubs-anslutningssträng. Här är en exempelkonfiguration: sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="$ConnectionString" password="Endpoint=sb://mynamespace.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=XXXXXXXXXXXXXXXX";

Kör konsument från kommandoraden

Om du vill köra konsumenten från kommandoraden genererar du JAR-filen och kör sedan inifrån Maven (eller genererar JAR-filen med Maven och kör sedan i Java genom att lägga till nödvändiga Kafka JAR:er i klassökvägen):

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

Om händelsehubben har händelser (till exempel om din producent också körs) börjar konsumenten ta emot händelser från ämnet test.

Kolla in Akka Streams Kafka Guide för mer detaljerad information om Akka Streams.

Nästa steg

Mer information om Event Hubs för Kafka finns i följande artiklar: