Использование Akka Streams с Центрами событий для Apache KafkaUsing Akka Streams with Event Hubs for Apache Kafka

В этом руководстве показано, как выполнять подключение Akka Streams к концентраторам событий с поддержкой Kafka без необходимости менять клиенты протоколов или запускать собственные кластеры.This tutorial shows you how to connect Akka Streams to Kafka-enabled event hubs without changing your protocol clients or running your own clusters. Центры событий Azure для платформы Kafka поддерживают Apache Kafka 1.0.Azure Event Hubs for the Kafka supports Apache Kafka version 1.0.

Из этого руководства вы узнаете, как выполнять следующие задачи:In this tutorial, you learn how to:

  • Создание пространства имен в Центрах событийCreate an Event Hubs namespace
  • Клонирование примера проектаClone the example project
  • Запуск производителя Akka StreamsRun Akka Streams producer
  • Запуск потребителя Akka StreamsRun Akka Streams consumer

Примечание

Этот пример можно найти на сайте GitHub.This sample is available on GitHub

Технические условияPrerequisites

Для работы с этим руководством выполните следующие предварительные требования:To complete this tutorial, make sure you have the following prerequisites:

  • Прочтите статью Центры событий Azure для Apache Kafka.Read through the Event Hubs for Apache Kafka article.
  • Подписка Azure.An Azure subscription. Если у вас еще нет подписки Azure, создайте бесплатную учетную запись, прежде чем начать работу.If you do not have one, create a free account before you begin.
  • Комплект разработчика Java (JDK) 1.8+.Java Development Kit (JDK) 1.8+
    • В Ubuntu выполните команду apt-get install default-jdk, чтобы установить JDK.On Ubuntu, run apt-get install default-jdk to install the JDK.
    • Обязательно настройте переменную среды JAVA_HOME так, чтобы она указывала на папку, в которой установлен пакет JDK.Be sure to set the JAVA_HOME environment variable to point to the folder where the JDK is installed.
  • Скачайте и установите двоичный архив Maven.Download and install a Maven binary archive
    • В Ubuntu выполните команду apt-get install maven, чтобы установить Maven.On Ubuntu, you can run apt-get install maven to install Maven.
  • Git.Git
    • В Ubuntu выполните команду sudo apt-get install git, чтобы установить Git.On Ubuntu, you can run sudo apt-get install git to install Git.

Создание пространства имен в Центрах событийCreate an Event Hubs namespace

Для отправки и получения данных из любой службы концентраторов событий требуется пространство имен концентраторов событий.An Event Hubs namespace is required to send or receive from any Event Hubs service. Инструкции по получению конечной точки Kafka Центров событий см. в статье Создание Центров событий с поддержкой Kafka.See Create Kafka Enabled Event Hubs for information about getting an Event Hubs Kafka endpoint. Скопируйте строку подключения к Центрам событий для дальнейшего использования.Make sure to copy the Event Hubs connection string for later use.

Клонирование примера проектаClone the example project

Теперь, когда у вас есть строка подключения к Центрам событий с поддержкой Kafka, клонируйте репозиторий Центров событий Azure для Kafka и перейдите ко вложенной папке akka.Now that you have a Kafka-enabled Event Hubs connection string, clone the Azure Event Hubs for Kafka repository and navigate to the akka subfolder:

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

Запуск производителя Akka StreamsRun Akka Streams producer

Используя предоставленный пример производителя Akka Streams, отправьте сообщения в службу Центров событий.Using the provided Akka Streams producer example, send messages to the Event Hubs service.

Предоставление конечной точки Kafka в Центрах событийProvide an Event Hubs Kafka endpoint

application.conf производителяProducer application.conf

Обновите значения bootstrap.servers и sasl.jaas.config в producer/src/main/resources/application.conf, чтобы перенаправить производителя на конечную точку Kafka Центров событий с правильной аутентификацией.Update the bootstrap.servers and sasl.jaas.config values in producer/src/main/resources/application.conf to direct the producer to the Event Hubs Kafka endpoint with the correct authentication.

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

Запуск производителя из командной строкиRun producer from the command line

Чтобы запустить производитель из командной строки, создайте JAR-файл, а затем запустите его из Maven (или создайте JAR-файл с помощью Maven, затем запустите его в Java, добавив необходимые JAR-файлы Kafka в путь к классу):To run the producer from the command line, generate the JAR and then run from within Maven (or generate the JAR using Maven, then run in Java by adding the necessary Kafka JAR(s) to the classpath):

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

Производитель начинает отправлять события в концентратор событий с поддержкой Kafka в раздел test и выводит события в STDOUT.The producer begins sending events to the Kafka-enabled event hub at topic test, and prints the events to stdout.

Запуск потребителя Akka StreamsRun Akka Streams consumer

Используя предоставленный пример потребителя, получите сообщения от концентраторов событий с поддержкой Kafka.Using the provided consumer example, receive messages from the Kafka-enabled event hubs.

Предоставление конечной точки Kafka в Центрах событийProvide an Event Hubs Kafka endpoint

application.conf потребителяConsumer application.conf

Обновите значения bootstrap.servers и sasl.jaas.config в consumer/src/main/resources/application.conf, чтобы перенаправить потребителя на конечную точку Kafka в Центрах событий с правильной аутентификацией.Update the bootstrap.servers and sasl.jaas.config values in consumer/src/main/resources/application.conf to direct the consumer to the Event Hubs Kafka endpoint with the correct authentication.

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

Запуск потребителя из командной строкиRun consumer from the command line

Чтобы запустить потребителя из командной строки, создайте JAR-файл, а затем запустите его из Maven (или создайте JAR-файл с помощью Maven, затем запустите его в Java, добавив необходимые JAR-файлы Kafka в путь к классу):To run the consumer from the command line, generate the JAR and then run from within Maven (or generate the JAR using Maven, then run in Java by adding the necessary Kafka JAR(s) to the classpath):

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

Если в концентраторе событий с поддержкой Kafka есть события (например, если ваш производитель также работает), потребитель начинает получать события из раздела test.If the Kafka-enabled event hub has events (for instance, if your producer is also running), then the consumer begins receiving events from topic test.

Дополнительные сведения об Akka Streams см. в руководстве по Akka Streams Kafka.Check out the Akka Streams Kafka Guide for more detailed information about Akka Streams.

Дальнейшие действияNext steps

Из этого руководства вы узнали, как выполнять подключение Akka Streams к концентраторам событий с поддержкой Kafka без необходимости менять клиенты протоколов или запускать собственные кластеры.In this tutorial, you learned how to connect Akka Streams to Kafka-enabled event hubs without changing your protocol clients or running your own clusters. Центры событий Azure для платформы Kafka поддерживают Apache Kafka 1.0.Azure Event Hubs for the Kafka supports Apache Kafka version 1.0.. В рамках данного руководства вы сделали следующее:You did the following actions as part of this tutorial:

  • Создание пространства имен в Центрах событийCreate an Event Hubs namespace
  • Клонирование примера проектаClone the example project
  • Запуск производителя Akka StreamsRun Akka Streams producer
  • Запуск потребителя Akka StreamsRun Akka Streams consumer

Дополнительные сведения о Центрах событий и Центрах событий для Kafka см. в статьях:To learn more about Event Hubs and Event Hubs for Kafka, see the following topic: