Guia de início rápido: transmitir dados com os Hubs de Eventos do Azure e o Apache Kafka

Este guia de início rápido mostra como transmitir dados de e para os Hubs de Eventos do Azure usando o protocolo Apache Kafka. Você não alterará nenhum código nos aplicativos de produtor ou consumidor Kafka de exemplo. Basta atualizar as configurações que os clientes usam para apontar para um namespace de Hubs de Eventos, que expõe um ponto de extremidade Kafka. Você também não constrói e usa um cluster Kafka por conta própria. Em vez disso, você usa o namespace Hubs de Eventos com o ponto de extremidade Kafka.

Nota

Este exemplo está disponível no GitHub

Pré-requisitos

Para concluir este início rápido, certifique-se de que tem os seguintes pré-requisitos:

Criar um namespace de Hubs de Eventos do Azure

Quando você cria um namespace de Hubs de Eventos, o ponto de extremidade Kafka para o namespace é habilitado automaticamente. Você pode transmitir eventos de seus aplicativos que usam o protocolo Kafka para hubs de eventos. Siga as instruções passo a passo em Criar um hub de eventos usando o portal do Azure para criar um namespace de Hubs de Eventos. Se você estiver usando um cluster dedicado, consulte Criar um namespace e um hub de eventos em um cluster dedicado.

Nota

Os Hubs de Eventos para Kafka não são suportados na camada básica .

Enviar e receber mensagens com Kafka em Hubs de Eventos

  1. Habilite uma identidade gerenciada atribuída ao sistema para a máquina virtual. Para obter mais informações sobre como configurar a identidade gerenciada em uma VM, consulte Configurar identidades gerenciadas para recursos do Azure em uma VM usando o portal do Azure. As identidades geridas para os recursos do Azure proporcionam aos recursos do Azure uma identidade gerida automaticamente no Microsoft Entra ID. Pode utilizar esta identidade para se autenticar em qualquer serviço que suporte a autenticação do Microsoft Entra sem ter credenciais no código.

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

  2. Usando a página Controle de acesso do namespace Hubs de Eventos que você criou, atribua a função Proprietário de Dados dos Hubs de Eventos do Azure à identidade gerenciada da VM. Os Hubs de Eventos do Azure dão suporte ao uso da ID do Microsoft Entra para autorizar solicitações a recursos de Hubs de Eventos. Com o Microsoft Entra ID, você pode usar o controle de acesso baseado em função do Azure (Azure RBAC) para conceder permissões a uma entidade de segurança, que pode ser um usuário ou uma entidade de serviço de aplicativo.

    1. No portal do Azure, navegue até o namespace Hubs de Eventos. Vá para "Controle de acesso (IAM)" na navegação à esquerda.

    2. Selecione + Adicionar e selecione Add role assignment.

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

    3. Na guia Função, selecione Proprietário de Dados dos Hubs de Eventos do Azure e selecione o botão Avançar.

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

    4. Na guia Membros, selecione a Identidade gerenciada na seção Atribuir acesso a.

    5. Selecione o link +Selecionar membros .

    6. Na página Selecionar identidades gerenciadas, siga estas etapas:

      1. Selecione a assinatura do Azure que tem a VM.

      2. Em Identidade gerenciada, selecione Máquina virtual

      3. Selecione a identidade gerenciada da máquina virtual.

      4. Selecione Selecionar na parte inferior da página.

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

    7. Selecione Rever + Atribuir.

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

  3. Reinicie a VM e entre novamente na VM para a qual você configurou a identidade gerenciada.

  4. Clone o repositório de Hubs de Eventos do Azure para Kafka.

  5. Navegar para azure-event-hubs-for-kafka/tutorials/oauth/java/managedidentity/consumer.

  6. Alterne para a src/main/resources/ pasta e abra consumer.configo . Substitua namespacename pelo nome do namespace dos Hubs de Eventos.

    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

    Você pode encontrar todas as amostras OAuth para Hubs de Eventos para Kafka aqui.

  7. Volte para a pasta Consumer onde está o arquivo pom.xml e, execute o código do consumidor e processe eventos do hub de eventos usando seus clientes Kafka:

    mvn clean package
    mvn exec:java -Dexec.mainClass="TestConsumer"                                    
    
  8. Inicie outra janela de prompt de comando e navegue até azure-event-hubs-for-kafka/tutorials/oauth/java/managedidentity/producer.

  9. Alterne para a src/main/resources/ pasta e abra producer.configo . Substitua mynamespace pelo nome do namespace dos Hubs de Eventos.

  10. Volte para a pasta Producer onde o arquivo está e, execute o pom.xml código do produtor e transmita eventos para Hubs de Eventos:

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

    Você deve ver mensagens sobre eventos enviados na janela do produtor. Agora, verifique a janela do aplicativo do consumidor para ver as mensagens que ele recebe do hub de eventos.

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

Validação de esquema para Kafka com Registro de Esquema

Você pode usar o Registro de Esquema do Azure para executar a validação de esquema ao transmitir dados com seus aplicativos Kafka usando Hubs de Eventos. O Registro de Esquema do Azure de Hubs de Eventos fornece um repositório centralizado para gerenciar esquemas e você pode conectar perfeitamente seus aplicativos Kafka novos ou existentes com o Registro de Esquema.

Para saber mais, consulte Validar esquemas para aplicativos Apache Kafka usando o Avro.

Próximos passos

Neste artigo, você aprendeu como transmitir para Hubs de Eventos sem alterar seus clientes de protocolo ou executar seus próprios clusters. Para saber mais, consulte Guia do desenvolvedor do Apache Kafka para Hubs de Eventos do Azure.