Delen via


Akka Streams gebruiken met Event Hubs voor Apache Kafka

In deze zelfstudie leert u hoe u Akka Streams verbindt 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 abonnement 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-verbindingsreeks kopieert voor later gebruik.

Het voorbeeldproject klonen

Nu u een Event Hubs-verbindingsreeks 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 berichten naar de Event Hubs-service met behulp van het opgegeven voorbeeld van Akka Streams-producenten.

Een Event Hubs Kafka-eindpunt opgeven

Producer application.conf

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

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 producent vanaf de opdrachtregel wilt uitvoeren, genereert u de JAR en voert u deze uit vanuit Maven (of genereert u de JAR met behulp van Maven, voert u deze uit in Java door de benodigde Kafka Java Archive-bestanden (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 testen drukt de gebeurtenissen af op stdout.

Akka Streams-consument uitvoeren

Met behulp van het opgegeven consumentenvoorbeeld ontvangt u berichten van de Event Hub.

Een Event Hubs Kafka-eindpunt opgeven

Consumer application.conf

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

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

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

Volgende stappen

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