Uso di Akka Streams con Hub eventi per Apache Kafka
Questa esercitazione illustra come connettere Akka Streams tramite il supporto di Hub eventi per Apache Kafka senza modificare i client di protocollo o eseguire cluster personalizzati.
In questa esercitazione verranno illustrate le procedure per:
- Creare uno spazio dei nomi di Hub eventi
- Clonare il progetto di esempio
- Eseguire il producer di Akka Streams
- Eseguire il consumer di Akka Streams
Nota
Questo esempio è disponibile su GitHub
Prerequisiti
Per completare questa esercitazione, verificare di disporre dei prerequisiti seguenti:
- Leggere con attenzione l'articolo Hub eventi per Apache Kafka.
- Una sottoscrizione di Azure. Se non se ne ha una, creare un account gratuito prima di iniziare.
-
Java Development Kit (JDK) 1.8+
- In Ubuntu eseguire
apt-get install default-jdk
per installare JDK. - Assicurarsi di impostare la variabile di ambiente JAVA_HOME in modo che faccia riferimento alla cartella di installazione di JDK.
- In Ubuntu eseguire
-
Scaricare e installare un archivio binario Maven
- In Ubuntu è possibile eseguire
apt-get install maven
per installare Maven.
- In Ubuntu è possibile eseguire
-
Git
- In Ubuntu è possibile eseguire
sudo apt-get install git
per installare Git.
- In Ubuntu è possibile eseguire
Creare uno spazio dei nomi di Hub eventi
Per l'invio o la ricezione da qualsiasi servizio Hub eventi è richiesto uno spazio dei nomi di Hub eventi. Per informazioni dettagliate, vedere Creare un hub eventi . Assicurarsi di copiare la stringa di connessione di Hub eventi per usarla in seguito.
Clonare il progetto di esempio
Dopo aver creato una stringa di connessione di Hub eventi, clonare il Hub eventi di Azure per il repository Kafka e passare alla akka
sottocartella:
git clone https://github.com/Azure/azure-event-hubs-for-kafka.git
cd azure-event-hubs-for-kafka/tutorials/akka/java
Eseguire il producer di Akka Streams
Usando l'esempio del producer Akka Streams fornito, inviare messaggi al servizio Hub eventi.
Fornire un endpoint Kafka di Hub eventi
Producer application.conf
Aggiornare i valori bootstrap.servers
e sasl.jaas.config
in producer/src/main/resources/application.conf
per indirizzare il producer all'endpoint Kafka di Hub eventi con l'autenticazione corretta.
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}\";"
}
}
Importante
Sostituire {YOUR.EVENTHUBS.CONNECTION.STRING}
con la stringa di connessione per lo spazio dei nomi di Hub eventi. Per istruzioni su come ottenere la stringa di connessione, vedere Ottenere una stringa di connessione ad Hub eventi. Ecco un esempio di configurazione: sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="$ConnectionString" password="Endpoint=sb://mynamespace.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=XXXXXXXXXXXXXXXX";
Eseguire il producer dalla riga di comando
Per eseguire il producer dalla riga di comando, generare il file JAR e quindi eseguirlo dall'interno di Maven (o generare il file JAR usando Maven, quindi eseguirlo in Java aggiungendo i JAR Kafka necessari al classpath):
mvn clean package
mvn exec:java -Dexec.mainClass="AkkaTestProducer"
Il producer inizia a inviare eventi all'hub eventi all'argomento test
e stampa gli eventi in stdout.
Eseguire il consumer di Akka Streams
Usando l'esempio consumer fornito, ricevere messaggi dall'hub eventi.
Fornire un endpoint Kafka di Hub eventi
Consumer application.conf
Aggiornare i valori bootstrap.servers
e sasl.jaas.config
in consumer/src/main/resources/application.conf
per indirizzare il consumer all'endpoint Kafka di Hub eventi con l'autenticazione corretta.
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}\";"
}
}
Importante
Sostituire {YOUR.EVENTHUBS.CONNECTION.STRING}
con la stringa di connessione per lo spazio dei nomi di Hub eventi. Per istruzioni su come ottenere la stringa di connessione, vedere Ottenere una stringa di connessione ad Hub eventi. Ecco un esempio di configurazione: sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="$ConnectionString" password="Endpoint=sb://mynamespace.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=XXXXXXXXXXXXXXXX";
Eseguire il consumer dalla riga di comando
Per eseguire il consumer dalla riga di comando, generare il file JAR e quindi eseguirlo dall'interno di Maven (o generare il file JAR usando Maven, quindi eseguirlo in Java aggiungendo i JAR Kafka necessari al classpath):
mvn clean package
mvn exec:java -Dexec.mainClass="AkkaTestConsumer"
Se l'hub eventi contiene eventi , ad esempio se il producer è in esecuzione, il consumer inizia a ricevere eventi dall'argomento test
.
Consultare il manuale Akka Streams Kafka Guide per altre informazioni su Akka Streams.
Passaggi successivi
Per altre informazioni su Hub eventi per Kafka, vedere gli articoli seguenti: