Inicio rápido: transmisión de datos con Azure Event Hubs y Apache Kafka

En este inicio rápido se muestra cómo transmitir datos hacia y desde Azure Event Hubs mediante el protocolo Apache Kafka. No cambiará ningún código en las aplicaciones de consumidor o productor de Kafka de ejemplo. Solo tiene que actualizar las configuraciones que usan los clientes para apuntar a un espacio de nombres de Event Hubs, que expone un punto de conexión de Kafka. Tampoco se compila y usa un clúster de Kafka por cuenta propia. En su lugar, usa el espacio de nombres de Event Hubs con el punto de conexión de Kafka.

Nota

Este ejemplo está disponible en GitHub.

Prerrequisitos

Para completar esta guía de inicio rápido, asegúrese de cumplir los siguientes requisitos previos:

Creación de un espacio de nombres de Azure Event Hubs

Al crear un espacio de nombres de Event Hubs, se habilita automáticamente el punto de conexión de Kafka para el espacio de nombres. Puede transmitir eventos a Event Hubs desde las aplicaciones que usan el protocolo de Kafka. Siga las instrucciones paso a paso de Creación de un centro de eventos mediante Azure Portal para crear un espacio de nombres de Event Hubs. Si usa un clúster dedicado, consulte Creación de un espacio de nombres y un centro de eventos en un clúster dedicado.

Nota:

Event Hubs para Kafka no se admite en el nivel básico.

Envío y recepción de mensajes con Kafka en Event Hubs

  1. Habilite una identidad administrada asignada por el sistema para la máquina virtual. Para obtener información sobre cómo configurar una identidad administrada en una máquina virtual, vea Configurar identidades administradas para recursos de Azure en una VM mediante Azure Portal. Las identidades administradas de los recursos de Azure proporcionan a los servicios de Azure una identidad administrada automáticamente en Microsoft Entra ID. Puede usar esta identidad para autenticar a cualquier servicio que admita la autenticación de Microsoft Entra, sin necesidad de tener credenciales en el código.

    Screenshot of the Identity tab of a virtual machine page in the Azure portal.

  2. Con la página Control de acceso del espacio de nombres de Event Hubs que creó, asigne el rol Propietario de los datos de Azure Event Hubs a la identidad administrada de la máquina virtual. Azure Event Hubs admite la autorización de solicitudes a recursos de Event Hubs mediante Microsoft Entra ID. Con Microsoft Entra ID, puede usar el control de acceso basado en rol de Azure (RBAC de Azure) para conceder permisos a una entidad de seguridad, que puede ser un usuario o una entidad de servicio de aplicación.

    1. En Azure Portal, vaya al espacio de nombres de Event Hubs. Vaya a "Control de acceso (IAM)" en el panel de navegación izquierdo.

    2. Seleccione + Agregar y seleccione Add role assignment.

      Screenshot of the Access Control page of an Event Hubs namespace.

    3. En la pestaña Rol, seleccione Propietario de los datos de Azure Event Hubs y seleccione el botón Siguiente.

      Screenshot showing the selection of the Azure Event Hubs Data Owner role.

    4. En la pestaña Miembros, seleccione la Identidad administrada en la sección Asignar acceso a.

    5. Haga clic en el enlace +Seleccionar miembros.

    6. En la página Seleccionar identidades administradas, siga estos pasos:

      1. Seleccione la suscripción de Azure que tiene la máquina virtual.

      2. En Identidad administrada, seleccione Máquina virtual.

      3. Seleccione la identidad administrada de la máquina virtual.

      4. Seleccione Seleccionar en la parte inferior de la página.

        Screenshot showing the Add role assignment -> Select managed identities page.

    7. Seleccione Revisar y asignar.

      Screenshot showing the Add role assignment page with role assigned to VM's managed identity.

  3. Reinicie la máquina virtual e inicie sesión de nuevo en la máquina virtual para la que ha configurado la identidad administrada.

  4. Clone el repositorio de Azure Event Hubs para Kafka.

  5. Vaya a azure-event-hubs-for-kafka/tutorials/oauth/java/managedidentity/consumer.

  6. Cambie a la carpeta src/main/resources/ y abra consumer.config. Reemplace namespacename por el nombre del espacio de nombres de Event Hubs.

    bootstrap.servers=NAMESPACENAME.servicebus.windows.net:9093
    security.protocol=SASL_SSL
    sasl.mechanism=OAUTHBEARER
    sasl.jaas.config=org.apache.kafka.common.security.oauthbearer.OAuthBearerLoginModule required;
    sasl.login.callback.handler.class=CustomAuthenticateCallbackHandler;
    

    Nota

    Puede encontrar todos los ejemplos de OAuth de Event Hubs para Kafka aquí.

  7. Vuelva a la carpeta Consumer donde está el archivo pom.xml y ejecute el código de consumidor y procese eventos desde el centro de eventos mediante los clientes de Kafka:

    mvn clean package
    mvn exec:java -Dexec.mainClass="TestConsumer"                                    
    
  8. Inicie otra ventana del símbolo del sistema y vaya a azure-event-hubs-for-kafka/tutorials/oauth/java/managedidentity/producer.

  9. Cambie a la carpeta src/main/resources/ y abra producer.config. Reemplace mynamespace por el nombre del espacio de nombres de Event Hubs.

  10. Vuelva a la carpeta Producer donde está el archivo pom.xml y ejecute el código de productor y transmita eventos a Event Hubs:

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

    Debería ver los mensajes sobre los eventos enviados en la ventana del productor. Ahora, compruebe la ventana de la aplicación de consumidor para ver los mensajes que esta recibe del centro de eventos.

    Screenshot showing the Producer and Consumer app windows showing the events.

Validación de esquemas para Kafka con el Registro de esquemas

Puede usar Azure Schema Registry para realizar la validación del esquema al transmitir datos con las aplicaciones de Kafka mediante Event Hubs. El Registro de esquemas de Azure Event Hubs proporciona un repositorio centralizado para administrar esquemas y puede conectar sin problemas las aplicaciones de Kafka nuevas o existentes con el Registro de esquemas.

Para más información, consulte Validación de esquemas para aplicaciones de Apache Kafka mediante Avro.

Pasos siguientes

En este artículo se muestra cómo hacer streaming a instancias de Event Hubs sin cambiar los clientes del protocolo o ejecutar sus propios clústeres. Para más información, consulte Guía del desarrollador de Apache Kafka para Azure Event Hubs.