Uso de Akka Streams con Event Hubs para Apache Kafka

En este tutorial se muestra cómo conectar Akka Streams mediante la compatibilidad de Event Hubs con Apache Kafka sin cambiar los clientes del protocolo o ejecutar sus propios clústeres.

En este tutorial, aprenderá a:

  • Creación de un espacio de nombres de Event Hubs
  • Clonación del proyecto de ejemplo
  • Ejecutar el productor de Akka Streams
  • Ejecutar el consumidor de Akka Streams

Nota

Este ejemplo está disponible en GitHub.

Prerrequisitos

Para completar este tutorial, asegúrese de cumplir estos requisitos previos:

  • Lea el artículo Event Hubs para Apache Kafka.
  • Suscripción a Azure. Si no tiene una, cree una cuenta gratuita antes de empezar.
  • Kit de desarrollo de Java (JDK) 1.8+
    • En Ubuntu, ejecute apt-get install default-jdk para instalar el JDK.
    • Asegúrese de establecer la variable de entorno JAVA_HOME para que apunte a la carpeta donde está instalado el JDK.
  • Descargue e instale un archivo binario de Maven
    • En Ubuntu, puede ejecutar apt-get install maven para instalar Maven.
  • Git
    • En Ubuntu, puede ejecutar sudo apt-get install git para instalar Git.

Creación de un espacio de nombres de Event Hubs

Se requiere un espacio de nombres de Event Hubs para enviar o recibir de cualquier servicio de Event Hubs. Consulte Creación de un centro de eventos para obtener más información detallada. Asegúrese de copiar la cadena de conexión de Event Hubs para su uso posterior.

Clonación del proyecto de ejemplo

Ahora que tiene una cadena de conexión de Event Hubs, clone el repositorio de Azure Event Hubs para Kafka y vaya a la subcarpeta akka:

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

Ejecutar el productor de Akka Streams

Con el ejemplo del productor de Akka Streams proporcionado, envíe mensajes al servicio Event Hubs.

Proporcionar un punto de conexión de Kafka para Event Hubs

application.conf del productor

Actualice los valores bootstrap.servers y sasl.jaas.config en producer/src/main/resources/application.conf para dirigir el productor al punto de conexión de Kafka para Event Hubs con la autenticación correcta.

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

Importante

Reemplace {YOUR.EVENTHUBS.CONNECTION.STRING} por la cadena de conexión para el espacio de nombres de Event Hubs. Para obtener instrucciones sobre cómo obtener la cadena de conexión, consulte Obtención de una cadena de conexión de Event Hubs. A continuación se muestra un ejemplo de configuración: sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="$ConnectionString" password="Endpoint=sb://mynamespace.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=XXXXXXXXXXXXXXXX";

Ejecución del productor desde la línea de comandos

Para ejecutar el productor desde la línea de comandos, genere los JAR y luego ejecútelo desde Maven (o genere los JAR con Maven, luego ejecútelo en Java al agregar los JAR de Kafka necesarios al parámetro classpath):

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

El productor ahora comienza a enviar eventos al centro de eventos en el tema test e imprimir los eventos a stdout.

Ejecutar el consumidor de Akka Streams

Con el ejemplo de consumidor proporcionado, reciba mensajes desde el centro de eventos.

Proporcionar un punto de conexión de Kafka para Event Hubs

application.conf del consumidor

Actualice los valores bootstrap.servers y sasl.jaas.config en consumer/src/main/resources/application.conf para dirigir el consumidor al punto de conexión de Kafka para Event Hubs con la autenticación correcta.

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

Importante

Reemplace {YOUR.EVENTHUBS.CONNECTION.STRING} por la cadena de conexión para el espacio de nombres de Event Hubs. Para obtener instrucciones sobre cómo obtener la cadena de conexión, consulte Obtención de una cadena de conexión de Event Hubs. A continuación se muestra un ejemplo de configuración: sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="$ConnectionString" password="Endpoint=sb://mynamespace.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=XXXXXXXXXXXXXXXX";

Ejecución del consumidor desde la línea de comandos

Para ejecutar el consumidor desde la línea de comandos, genere los JAR y luego ejecútelo desde Maven (o genere los JAR con Maven, luego ejecútelo en Java al agregar los JAR de Kafka necesarios al parámetro classpath):

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

Si el centro de eventos tiene eventos (por ejemplo, si el productor también está ejecutándose), el consumidor comienza a recibir eventos del tema test.

Consulte la Guía de Kafka de Akka Streams para más información sobre Akka Streams.

Pasos siguientes

Para obtener más información acerca de Event Hubs para Kafka, consulte los artículos siguientes: