Använda Apache Flink med Azure Event Hubs för Apache Kafka

Den här självstudien visar hur du ansluter Apache Flink till en händelsehubb utan att ändra protokollklienter eller köra dina egna kluster. Mer information om Event Hubs stöd för Apache Kafka konsumentprotokoll finns i Event Hubs för Apache Kafka.

I den här guiden får du lära dig att:

  • Skapa ett Event Hubs-namnområde
  • Klona exempelprojektet
  • Kör Flink-producenten
  • Köra Flink-konsument

Anteckning

Det här exemplet finns på GitHub

Förutsättningar

Kontrollera att du har följande förutsättningar för att kunna slutföra den här självstudien:

  • Läs artikeln Event Hubs för Apache Kafka.
  • En Azure-prenumeration. Om du inte har ett konto kan du skapa ett kostnadsfritt konto innan du börjar.
  • Java Development Kit (JDK) 1.7+
    • I Ubuntu kör du apt-get install default-jdk för att installera JDK-paketet.
    • Tänk på att ställa in miljövariabeln JAVA_HOME så att den pekar på den mapp där JDK-paketet är installerat.
  • Ladda ned och installera ett binärt Maven-arkiv
    • I Ubuntu kan du köra apt-get install maven för att installera Maven.
  • Git
    • I Ubuntu kan du köra sudo apt-get install git för att installera Git.

Skapa ett Event Hubs-namnområde

Ett Event Hubs namnområde krävs för att skicka eller ta emot från Event Hubs tjänst. Anvisningar för hur du skapar ett namnområde och en händelsehubb finns i Skapa en händelsehubb. Se till att kopiera Event Hubs anslutningssträngen för senare användning.

Klona exempelprojektet

Nu när du har Event Hubs anslutningssträngen klonar du Azure Event Hubs Kafka-lagringsplatsen och går flink till undermappen:

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

Med hjälp av det tillhandahållna Flink-producentexempel kan du skicka meddelanden till Event Hubs tjänsten.

Ange en Event Hubs Kafka-slutpunkt

producer.config

Uppdatera värdena bootstrap.servers och i för att dirigera producenten till Event Hubs sasl.jaas.config producer/src/main/resources/producer.config Kafka-slutpunkten med rätt autentisering.

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}";

Viktigt

Ersätt {YOUR.EVENTHUBS.CONNECTION.STRING} med anslutningssträngen för Event Hubs namnområdet. Anvisningar om hur du hämtar anslutningssträngen finns i Hämta en Event Hubs-anslutningssträng. Här är en exempelkonfiguration: sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="$ConnectionString" password="Endpoint=sb://mynamespace.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=XXXXXXXXXXXXXXXX";

Kör producenten från kommandoraden

Om du vill köra producenten från kommandoraden genererar du JAR-programmet och kör sedan från Maven (eller genererar JAR-programmet med Maven och kör sedan i Java genom att lägga till nödvändiga Kafka JAR:er i klassökvägen):

mvn clean package
mvn exec:java -Dexec.mainClass="FlinkTestProducer"

Producenten börjar nu skicka händelser till händelsehubben vid ämnet test och skriver ut händelserna till stdout.

Ta emot meddelanden från händelsehubben med hjälp av det tillhandahållna konsumentexempel.

Ange en Event Hubs Kafka-slutpunkt

consumer.config

Uppdatera värdena bootstrap.servers och i för att dirigera konsumenten till Event Hubs sasl.jaas.config consumer/src/main/resources/consumer.config Kafka-slutpunkten med rätt autentisering.

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}";

Viktigt

Ersätt {YOUR.EVENTHUBS.CONNECTION.STRING} med anslutningssträngen för Event Hubs namnområdet. Anvisningar om hur du hämtar anslutningssträngen finns i Hämta en Event Hubs-anslutningssträng. Här är en exempelkonfiguration: sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="$ConnectionString" password="Endpoint=sb://mynamespace.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=XXXXXXXXXXXXXXXX";

Kör konsument från kommandoraden

Om du vill köra konsumenten från kommandoraden genererar du JAR-kod och kör sedan från Maven (eller genererar JAR-programmet med Maven och kör sedan i Java genom att lägga till nödvändiga Kafka JAR:er i klassökvägen):

mvn clean package
mvn exec:java -Dexec.mainClass="FlinkTestConsumer"

Om händelsehubben har händelser (till exempel om producenten också körs) börjar konsumenten nu ta emot händelser från ämnet test .

Mer detaljerad information om hur du ansluter Flink till Kafka finns i Flinks Guide för Kafka-anslutning.

Nästa steg

Mer information om Event Hubs kafka finns i följande artiklar: