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.
- En Ubuntu, ejecute
-
Descargue e instale un archivo binario de Maven
- En Ubuntu, puede ejecutar
apt-get install maven
para instalar Maven.
- En Ubuntu, puede ejecutar
-
Git
- En Ubuntu, puede ejecutar
sudo apt-get install git
para instalar Git.
- En Ubuntu, puede ejecutar
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:
- Reflejo de un agente de Kafka en un centro de eventos
- Conexión de Apache Spark a un centro de eventos
- Conexión de Apache Flink a un centro de eventos
- Integración de Kafka Connect con un centro de eventos
- Exploración de ejemplos en nuestro GitHub
- Guía del desarrollador de Apache Kafka para Azure Event Hubs