Akka Streams gebruiken met Event Hubs voor Apache Kafka
In deze zelfstudie leert u hoe u Akka Streams verbindt 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 abonnement 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-verbindingsreeks kopieert voor later gebruik.
Het voorbeeldproject klonen
Nu u een Event Hubs-verbindingsreeks 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 berichten naar de Event Hubs-service met behulp van het opgegeven voorbeeld van Akka Streams-producenten.
Een Event Hubs Kafka-eindpunt opgeven
Producer application.conf
Werk de bootstrap.servers
en sasl.jaas.config
waarden bij producer/src/main/resources/application.conf
om de producent naar het Event Hubs Kafka-eindpunt te leiden met de juiste verificatie.
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 producent vanaf de opdrachtregel wilt uitvoeren, genereert u de JAR en voert u deze uit vanuit Maven (of genereert u de JAR met behulp van Maven, voert u deze uit in Java door de benodigde Kafka Java Archive-bestanden (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 in het onderwerp test
en drukt de gebeurtenissen af op stdout.
Akka Streams-consument uitvoeren
Met behulp van het opgegeven consumentenvoorbeeld ontvangt u berichten van de Event Hub.
Een Event Hubs Kafka-eindpunt opgeven
Consumer application.conf
Werk de bootstrap.servers
en sasl.jaas.config
waarden bij consumer/src/main/resources/application.conf
om de consument naar het Event Hubs Kafka-eindpunt te leiden met de juiste verificatie.
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";
Consument uitvoeren vanaf de opdrachtregel
Als u de consument vanaf de opdrachtregel wilt uitvoeren, genereert u de JAR en voert u deze uit vanuit Maven (of genereert u de JAR met behulp van Maven en voert u deze 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 heeft (bijvoorbeeld als uw producent ook wordt uitgevoerd), begint de consument gebeurtenissen te ontvangen van het onderwerp test
.
Bekijk de Kafka-handleiding voor Akka Streams voor meer gedetailleerde informatie over Akka Streams.
Volgende stappen
Zie de volgende artikelen voor meer informatie over Event Hubs voor Kafka: