Akka Streams gebruiken met Event Hubs voor Apache Kafka
Deze zelfstudie laat zien hoe u Akka Streams kunt verbinden via de Event Hubs-ondersteuning voor Apache Kafka zonder uw protocolclients te wijzigen of uw eigen clusters uit te voeren.
In deze zelfstudie leert u het volgende:
- Een Event Hubs-naamruimte maken
- Het voorbeeldproject klonen
- Akka Streams-producent uitvoeren
- Akka Streams-consument uitvoeren
Notitie
Dit voorbeeld is beschikbaar op GitHub
Vereisten
Zorg ervoor dat u aan de volgende vereisten voldoet om deze zelfstudie te voltooien:
- Lees het artikel Event Hubs voor Apache Kafka door.
- Een Azure-abonnement. Als u nog geen account hebt, maakt u een gratis account voordat u begint.
-
Java Development Kit (JDK) 1.8+
- Voer op Ubuntu
apt-get install default-jdk
uit om de JDK te installeren. - Zorg dat de omgevingsvariabele JAVA_HOME verwijst naar de map waarin de JDK is geïnstalleerd.
- Voer op Ubuntu
-
Een binair Maven-archief downloaden en installeren
- Op Ubuntu kunt u
apt-get install maven
uitvoeren om Maven te installeren.
- Op Ubuntu kunt u
-
Git
- Op Ubuntu kunt u
sudo apt-get install git
uitvoeren om Git te installeren.
- Op Ubuntu kunt u
Een Event Hubs-naamruimte maken
Een Event Hubs-naamruimte is vereist voor het verzenden of ontvangen van een Event Hubs-service. Zie Een Event Hub maken voor gedetailleerde informatie. Zorg ervoor dat u de Event Hubs-connection string kopieert voor later gebruik.
Het voorbeeldproject klonen
Nu u een Event Hubs-connection string hebt, kloont u de Azure Event Hubs voor Kafka-opslagplaats en navigeert u naar de akka
submap:
git clone https://github.com/Azure/azure-event-hubs-for-kafka.git
cd azure-event-hubs-for-kafka/tutorials/akka/java
Akka Streams-producent uitvoeren
Verzend met behulp van het voorbeeld van de Akka Streams-producent berichten naar de Event Hubs-service.
Een Event Hubs Kafka-eindpunt opgeven
Producer application.conf
Werk de bootstrap.servers
waarden en sasl.jaas.config
in bij producer/src/main/resources/application.conf
om de producent met de juiste verificatie naar het Event Hubs Kafka-eindpunt te leiden.
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}\";"
}
}
Belangrijk
Vervang {YOUR.EVENTHUBS.CONNECTION.STRING}
door de verbindingsreeks voor uw Event Hubs-naamruimte. Zie Een verbindingsreeks voor Event Hubs ophalen voor instructies voor het ophalen van de verbindingsreeks. Hier volgt een voorbeeldconfiguratie: sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="$ConnectionString" password="Endpoint=sb://mynamespace.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=XXXXXXXXXXXXXXXX";
Producer uitvoeren vanaf de opdrachtregel
Als u de producer wilt uitvoeren vanaf de opdrachtregel, genereert u het JAR en voert u deze vervolgens uit vanuit Maven (of genereert u het JAR met behulp van Maven en voert u uit in Java door de benodigde Kafka-JAR('s) toe te voegen aan het klassepad):
mvn clean package
mvn exec:java -Dexec.mainClass="AkkaTestProducer"
De producent begint met het verzenden van gebeurtenissen naar de Event Hub bij onderwerp test
en drukt de gebeurtenissen af op stdout.
Akka Streams-consument uitvoeren
Aan de hand van het opgegeven voorbeeld van de consument ontvangt u berichten van de Event Hub.
Een Event Hubs Kafka-eindpunt opgeven
Consumer application.conf
Werk de bootstrap.servers
waarden en sasl.jaas.config
bij in consumer/src/main/resources/application.conf
om de consument met de juiste verificatie naar het Event Hubs Kafka-eindpunt te leiden.
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}\";"
}
}
Belangrijk
Vervang {YOUR.EVENTHUBS.CONNECTION.STRING}
door de verbindingsreeks voor uw Event Hubs-naamruimte. Zie Een verbindingsreeks voor Event Hubs ophalen voor instructies voor het ophalen van de verbindingsreeks. Hier volgt een voorbeeldconfiguratie: sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="$ConnectionString" password="Endpoint=sb://mynamespace.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=XXXXXXXXXXXXXXXX";
Consumer uitvoeren vanaf de opdrachtregel
Als u de consumer wilt uitvoeren vanaf de opdrachtregel, genereert u het JAR en voert u deze vervolgens uit vanuit Maven (of genereert u het JAR met behulp van Maven en voert u vervolgens uit in Java door de benodigde Kafka-JAR('s) toe te voegen aan het klassepad):
mvn clean package
mvn exec:java -Dexec.mainClass="AkkaTestConsumer"
Als de Event Hub gebeurtenissen bevat (bijvoorbeeld als uw producent ook wordt uitgevoerd), begint de consument gebeurtenissen van het onderwerp test
te ontvangen.
Bekijk de Kafka-gids voor Akka Streams voor meer gedetailleerde informatie over Akka Streams.
Volgende stappen
Zie de volgende artikelen voor meer informatie over Event Hubs voor Kafka: