Akka Streams gebruiken met Event Hubs voor Apache Kafka

Deze zelfstudie laat zien hoe u Akka Streams kunt verbinden via de Event Hubs-ondersteuning voor Apache Kafka zonder uw protocolclients te wijzigen of uw eigen clusters uit te voeren.

In deze zelfstudie leert u het volgende:

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

Notitie

Dit voorbeeld is beschikbaar op GitHub

Vereisten

Zorg ervoor dat u aan de volgende vereisten voldoet 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 Event Hubs-connection string hebt, kloont u de Azure Event Hubs voor 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-producent uitvoeren

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

Een Event Hubs Kafka-eindpunt opgeven

Producer application.conf

Werk de bootstrap.servers waarden en sasl.jaas.config in bij producer/src/main/resources/application.conf om de producent met de juiste verificatie naar het Event Hubs 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 het JAR en voert u deze vervolgens uit vanuit Maven (of genereert u het JAR met behulp van Maven en voert u 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 bij onderwerp testen drukt de gebeurtenissen af op stdout.

Akka Streams-consument uitvoeren

Aan de hand van het opgegeven voorbeeld van de consument ontvangt u berichten van de Event Hub.

Een Event Hubs Kafka-eindpunt opgeven

Consumer application.conf

Werk de bootstrap.servers waarden en sasl.jaas.config bij in consumer/src/main/resources/application.conf om de consument met de juiste verificatie naar het Event Hubs 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";

Consumer uitvoeren vanaf de opdrachtregel

Als u de consumer wilt uitvoeren vanaf de opdrachtregel, genereert u het JAR en voert u deze vervolgens uit vanuit Maven (of genereert u het JAR met behulp van Maven en voert u 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), begint de consument gebeurtenissen van het onderwerp testte ontvangen.

Bekijk de Kafka-gids voor Akka Streams voor meer gedetailleerde informatie over Akka Streams.

Volgende stappen

Zie de volgende artikelen voor meer informatie over Event Hubs voor Kafka: