Använda Akka Streams med Event Hubs för Apache Kafka
Den här självstudien visar hur du ansluter Akka Flöden via Event Hubs för Apache Kafka utan att ändra 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 Flöden producent
- Köra Akka Flöden konsument
Anteckning
Det här exemplet finns på GitHub
Förutsättningar
Kontrollera att du har följande krav för att kunna 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-jdkfö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 maven-binärt arkiv
- I Ubuntu kan du köra
apt-get install mavenför att installera Maven.
- I Ubuntu kan du köra
- Git
- I Ubuntu kan du köra
sudo apt-get install gitför att installera Git.
- I Ubuntu kan du köra
Skapa ett Event Hubs-namnområde
En Event Hubs-namnrymd krävs för att skicka eller ta emot från Event Hubs tjänst. Detaljerad 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 Event Hubs en anslutningssträng klonar du Azure Event Hubs Kafka-lagringsplatsen och navigerar akka till undermappen:
git clone https://github.com/Azure/azure-event-hubs-for-kafka.git
cd azure-event-hubs-for-kafka/tutorials/akka/java
Köra Akka Flöden producent
Med hjälp av Akka Flöden producentexempel kan du skicka meddelanden till Event Hubs tjänsten.
Ange en Event Hubs Kafka-slutpunkt
Producentprogram.conf
Uppdatera värdena bootstrap.servers och i för att dirigera producenten till Event Hubs sasl.jaas.config producer/src/main/resources/application.conf 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 producenten från kommandoraden
Om du vill köra producenten från kommandoraden genererar du JAR-kod och kör inifrån Maven (eller genererar JAR-programmet 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 på ämnet test och skriver ut händelserna till stdout.
Köra Akka Flöden konsument
Ta emot meddelanden från händelsehubben med hjälp av exemplet med den tillhandahållna konsumenten.
Ange en Event Hubs Kafka-slutpunkt
Consumer application.conf
Uppdatera värdena bootstrap.servers och i för att dirigera konsumenten till Event Hubs sasl.jaas.config consumer/src/main/resources/application.conf 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-kod och kör inifrån Maven (eller genererar JAR-programmet 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 producenten också körs) börjar konsumenten ta emot händelser från ämnet test .
Kolla in Akka Flöden Kafka-guiden för mer detaljerad information om Akka Flöden.
Nästa steg
Mer information om Event Hubs kafka finns i följande artiklar: