Início rápido: transmita dados com os Hubs de Eventos do Azure e o Apache Kafka

Esse início rápido mostra a você 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 exemplo do produtor ou do consumidor do Kafka. Você acabou de atualizar as configurações que os clientes utilizam para apontar para um namespace dos Hubs de Eventos, que expõe um ponto de extremidade Kafka. Você também não cria e usa um cluster Kafka sozinho. Em vez disso, você usará o namespace do Hubs de Eventos com o ponto de extremidade Kafka.

Observação

Este exemplo está disponível no GitHub

Pré-requisitos

Para concluir este início rápido, você precisa atender aos seguinte pré-requisitos:

Criar um namespace de Hubs de Eventos do Azure

Quando você cria um namespace dos Hubs de Eventos, o ponto de extremidade do Kafka para o namespace é habilitado automaticamente. Você pode transmitir eventos de 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 dos Hubs de Eventos. Se estiver usando um cluster dedicado, confira Criar um namespace e um hub de eventos em um cluster dedicado.

Observação

Não há suporte para os Hubs de Eventos para Kafka na camada básica.

Enviar e receber mensagens com Kafka no Hubs de Evento

  1. Habilite uma identidade gerenciada atribuída pelo sistema para a máquina virtual. Para obter mais informações sobre como configurar identidades gerenciadas em uma VM, confira Configurar identidades gerenciadas para recursos do Azure em uma VM usando o portal do Azure. As identidades gerenciadas dos recursos do Azure fornecem aos serviços do Azure uma identidade gerenciada automaticamente na ID do Microsoft Entra. Use essa identidade para autenticar qualquer serviço que dê suporte à autenticação do Microsoft Entra, sem a necessidade de ter as 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 dos Hubs de Eventos que você criou, atribua a função Proprietário de Dados nos Hubs de Eventos do Azure à identidade gerenciada da VM. Os Hubs de Eventos do Azure dão suporte ao uso do Microsoft Entra ID para autorizar solicitações aos recursos dos Hubs de Eventos. Com o Microsoft Entra ID, você pode usar o RBAC (controle de acesso baseado em função) do Azure para conceder permissões a uma entidade de segurança, que pode ser um usuário ou entidade de serviço de aplicativo.

    1. No Portal do Azure, navegue até o seu namespace de Hubs de Eventos. Acesse "Controle de Acesso (IAM)" no painel de navegação à esquerda.

    2. Selecione + Adicionar e escolha Add role assignment.

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

    3. Na guia Função, selecione Proprietário de Dados nos 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 Identidade Gerenciada na seção Atribuir acesso a.

    5. Escolha o link +Selecionar membros.

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

      1. Selecione a assinatura do Azure que contém a VM.

      2. Em Identidade gerenciada, escolha Máquina virtual

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

      4. Clique em Selecionar na parte inferior da página.

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

    7. Selecione Examinar + Atribuir.

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

  3. Reinicie a VM e faça logon 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. Navegue até azure-event-hubs-for-kafka/tutorials/oauth/java/managedidentity/consumer.

  6. Alterne para a pasta src/main/resources/ e abra consumer.config. 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;
    

    Observação

    Encontre todas as amostras do OAuth para os Hubs de Eventos para o Kafka aqui.

  7. Volte à pasta Consumidor em que está o arquivo pom.xml e execute o código do consumidor e processe eventos do hub de eventos usando os clientes do Kafka:

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

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

  10. Volte à pasta Produtor em que está o arquivo pom.xml e execute o código do produtor e transmita eventos nos Hubs de Eventos:

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

    Você verá mensagens sobre eventos enviados na janela do produtor. Agora, verifique a janela do aplicativo consumidor para ver as mensagens recebidas do hub de eventos.

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

Validação de esquema do Kafka com o 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 os Hubs de Eventos. O Registro de Esquema do Azure dos Hubs de Eventos fornece um repositório centralizado para gerenciar esquemas e você pode conectar perfeitamente seus aplicativos Kafka, novos ou existentes, ao Registro de Esquema.

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

Próximas etapas

Neste artigo, você aprendeu como transmitir para os Hubs de Eventos sem alterar seus clientes de protocolo ou seus próprios clusters em execução. Para saber mais, confira Guia do desenvolvedor do Apache Kafka para Hubs de Eventos do Azure.