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.
- I Ubuntu kör du
-
Ladda ned och installera ett binärt Maven-arkiv
- I Ubuntu kan du köra
apt-get install maven
för att installera Maven.
- I Ubuntu kan du köra
-
Git
- I Ubuntu kan du köra
sudo apt-get install git
för att installera Git.
- I Ubuntu kan du köra
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 test
och 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: