Condividi tramite


Uso di Apache Flink con Hub eventi di Azure per Apache Kafka

Questa esercitazione illustra come connettere Apache Flink a un hub eventi senza modificare i client di protocollo o eseguire cluster personalizzati. Per altre informazioni sul supporto di Hub eventi per il protocollo consumer Apache Kafka, vedere Hub eventi per Apache Kafka.

In questa esercitazione apprenderai a:

  • Creare uno spazio dei nomi di Hub eventi
  • Clonare il progetto di esempio
  • Eseguire il producer Flink
  • Eseguire il consumer Flink

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.7+
    • 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.
  • Scaricare e installare un archivio binario Maven
    • In Ubuntu è possibile eseguire apt-get install maven per installare Maven.
  • Git
    • In Ubuntu è possibile eseguire sudo apt-get install git per installare Git.

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. Vedere Creazione di un hub eventi per istruzioni su come creare uno spazio dei nomi e un hub eventi. Assicurarsi di copiare la stringa di connessione di Hub eventi per usarla in seguito.

Clonare il progetto di esempio

Ora che si dispone dell'stringa di connessione di Hub eventi, clonare il Hub eventi di Azure per il repository Kafka e passare alla flink sottocartella:

git clone https://github.com/Azure/azure-event-hubs-for-kafka.git
cd azure-event-hubs-for-kafka/tutorials/flink

Usando l'esempio del producer Flink fornito, inviare messaggi al servizio Hub eventi.

Fornire un endpoint Kafka di Hub eventi

producer.config

Aggiornare i valori bootstrap.servers e sasl.jaas.config in producer/src/main/resources/producer.config per indirizzare il producer all'endpoint Kafka di Hub eventi con l'autenticazione corretta.

bootstrap.servers={YOUR.EVENTHUBS.FQDN}:9093
client.id=FlinkExampleProducer
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="FlinkTestProducer"

Il producer inizierà ora a inviare eventi all'hub eventi all'argomento test e a stampare gli eventi in stdout.

Usando l'esempio di consumer fornito, ricevere messaggi dall'hub eventi.

Fornire un endpoint Kafka di Hub eventi

consumer.config

Aggiornare i valori bootstrap.servers e sasl.jaas.config in consumer/src/main/resources/consumer.config per indirizzare il consumer all'endpoint Kafka di Hub eventi con l'autenticazione corretta.

bootstrap.servers={YOUR.EVENTHUBS.FQDN}:9093
group.id=FlinkExampleConsumer
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="FlinkTestConsumer"

Se l'hub eventi include eventi( ad esempio, se il producer è in esecuzione), il consumer inizia ora a ricevere eventi dall'argomento test.

Consultare la Guida del connettore Kafka di Flink per altre informazioni sulla connessione di Flink a Kafka.

Passaggi successivi

Per altre informazioni su Hub eventi di Azure per Kafka, vedere gli articoli seguenti: