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 del 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 verranno illustrate le procedure per:

  • 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. Per istruzioni per creare uno spazio dei nomi e un hub eventi, vedere Creazione di 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 la stringa di connessione di Hub eventi, clonare la Hub eventi di Azure per il flink repository Kafka e passare alla 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 produttore inizierà ora a inviare eventi all'hub eventi in argomento test e 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 ha eventi (ad esempio, se il produttore è 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 per Kafka, vedere gli articoli seguenti: