Akka Streams gebruiken met Event Hubs voor Apache Kafka

In deze zelfstudie leert u hoe u Akka Streams via de Event Hubs-ondersteuning voor Apache Kafka kunt verbinden zonder uw protocol-clients te wijzigen of uw eigen clusters uit te werken.

In deze zelfstudie leert u het volgende:

  • Een Event Hubs-naamruimte maken
  • Het voorbeeldproject klonen
  • Akka Streams uitvoeren
  • Akka Streams consumer

Notitie

Dit voorbeeld is beschikbaar op GitHub

Vereisten

Zorg ervoor dat u aan de volgende vereisten hebt om deze zelfstudie te voltooien:

  • Lees het artikel Event Hubs voor Apache Kafka door.
  • Een Azure-abonnement. Als u nog geen account 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.
  • Een binair Maven-archief downloaden en installeren
    • Op Ubuntu kunt u apt-get install maven uitvoeren om Maven te installeren.
  • Git
    • Op Ubuntu kunt u sudo apt-get install git uitvoeren om Git te installeren.

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 connection string kopieert voor later gebruik.

Het voorbeeldproject klonen

Nu u een nieuwe Event Hubs connection string hebt, kloont u de Azure Event Hubs voor de 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 uitvoeren

Verzend met behulp van het opgegeven Akka Streams producer-voorbeeld berichten naar de Event Hubs service.

Een kafka Event Hubs-eindpunt verstrekken

Producer application.conf

Werk de waarden en bij in om de producent met de juiste bootstrap.servers sasl.jaas.config verificatie Event Hubs het producer/src/main/resources/application.conf Kafka-eindpunt te leiden.

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 producer wilt uitvoeren vanaf de opdrachtregel, genereert u de JAR en wordt deze vervolgens uitgevoerd vanuit Maven (of genereert u de JAR met behulp van Maven. Voer vervolgens uit in Java door de benodigde Kafka 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 consumer

Gebruik het opgegeven consumentenvoorbeeld om berichten te ontvangen van de Event Hub.

Een kafka Event Hubs-eindpunt verstrekken

Consumer application.conf

Werk de waarden en bij in om de consument met de juiste bootstrap.servers sasl.jaas.config verificatie naar Event Hubs consumer/src/main/resources/application.conf Kafka-eindpunt te leiden.

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 wilt uitvoeren vanaf de opdrachtregel, genereert u de JAR en wordt deze vervolgens uitgevoerd vanuit Maven (of genereert u de JAR met behulp van Maven. Voer vervolgens 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 bevat (bijvoorbeeld als uw producent ook wordt uitgevoerd), ontvangt de consument gebeurtenissen van het onderwerp test .

Bekijk de Handleiding voor Akka Streams Kafka voor meer informatie over Akka Streams.

Volgende stappen

Zie de volgende artikelen Event Hubs meer informatie over het maken van een Event Hubs kafka: