Tutorial: Processar Apache Kafka para eventos dos Hubs de Eventos usando o Stream Analytics
Este artigo mostra como transmitir dados para os Hubs de Eventos e processá-los com o Azure Stream Analytics. Este artigo apresenta as seguintes etapas:
- Crie um namespace dos Hubs de Eventos.
- Criar um cliente Kafka que envia mensagens para o hub de eventos.
- Criar um trabalho do Stream Analytics que copia dados do hub de eventos para um armazenamento de Blobs do Azure.
Não é necessário alterar os clientes de protocolo ou executar seus próprios clusters ao usar o ponto de extremidade do Kafka exposto por um hub de eventos. O Azure Event Hubs suporta o Apache Kafka versão 1.0. e superior.
Pré-requisitos
Para concluir este início rápido, você precisa atender aos seguinte pré-requisitos:
- Uma assinatura do Azure. Se você não tiver uma, crie uma conta gratuita antes de começar.
- Java Development Kit (JDK) 1.7+.
- Realizar o download e instalar um armazenamento binário Maven
- Git
- Uma conta do Armazenamento do Azure. Se não tiver, crie uma antes de prosseguir. O trabalho do Stream Analytics neste passo a passo armazena os dados de saída em um armazenamento de Blobs do Azure.
Criar um namespace de Hubs de Eventos
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 mensagens com Kafka em Hubs de Eventos
Clone o repositório de Hubs de Eventos do Azure para Kafka no computador.
Navegue até a pasta:
azure-event-hubs-for-kafka/quickstart/java/producer
.Atualize os detalhes de configuração para o produtor em
src/main/resources/producer.config
. Especifique o nome e a cadeia de conexão do namespace do hub de eventos.bootstrap.servers={EVENT HUB NAMESPACE}.servicebus.windows.net:9093 security.protocol=SASL_SSL sasl.mechanism=PLAIN sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="$ConnectionString" password="{CONNECTION STRING for EVENT HUB NAMESPACE}";
Navegue até
azure-event-hubs-for-kafka/quickstart/java/producer/src/main/java/
e abra o arquivo TestDataReporter.java em um editor de sua escolha.Comente a seguinte linha de código:
//final ProducerRecord<Long, String> record = new ProducerRecord<Long, String>(TOPIC, time, "Test Data " + i);
Adicione a seguinte linha de código no lugar do código comentado:
final ProducerRecord<Long, String> record = new ProducerRecord<Long, String>(TOPIC, time, "{ \"eventData\": \"Test Data " + i + "\" }");
Esse código envia os dados do evento no formato JSON. Ao configurar a entrada para uma tarefa do Stream Analytics, você especifica JSON como o formato dos dados de entrada.
Execute o produtor e transmita para os hubs de eventos. Em um computador Windows, ao usar um prompt de comando Node.js, alterne para a pasta
azure-event-hubs-for-kafka/quickstart/java/producer
antes de executar esses comandos.mvn clean package mvn exec:java -Dexec.mainClass="TestProducer"
Verifique se o hub de eventos recebe os dados
Selecione Hubs de Eventos em ENTIDADES. Confirme se você vê um hub de eventos nomeado teste.
Confirme se você vê mensagens chegando ao hub de eventos.
Processar dados do evento usando um trabalho do Stream Analytics
Nesta seção, você cria um trabalho do Azure Stream Analytics. O cliente Kafka envia eventos para o hub de eventos. Você cria um trabalho do Stream Analytics que recebe dados do evento como entrada e os envia para um armazenamento de Blobs do Azure. Se não tiver uma conta de Armazenamento do Microsoft Azure, crie uma.
A consulta no trabalho do Stream Analytics passa pelos dados sem executar quaisquer análises. É possível criar uma consulta que transforma os dados de entrada para produzir dados de saída em um formato diferente ou com insights obtidos.
Criar um trabalho de Stream Analytics
- Selecione + Criar um recurso no portal do Azure.
- Selecione Analytics no menu Azure Marketplace e selecione trabalho do Stream Analytics.
- Na página Novo Stream Analytics, execute as seguintes ações:
Insira um nome para o trabalho.
Selecione sua assinatura.
Selecione Criar novo para o grupo de recursos e insira o nome. Também é possível usar um grupo de recursos existente.
Selecione um local para o trabalho.
Selecione Criar para criar o trabalho.
Configurar entrada de trabalho
Na mensagem de notificação, selecione Ir para o recurso para ver a página do trabalho do Stream Analytics.
Selecione Entradas na seção TOPOLOGIA DO TRABALHO no menu esquerdo.
Selecione Adicionar entrada de fluxo e, em seguida, selecione Hub de eventos.
Na página de configuração entrada do Hub de Eventos, execute as seguintes ações:
Especifique um alias para a entrada.
Selecione sua assinatura do Azure.
Selecione o namespace do hub de eventos criado anteriormente.
Selecione testar para o hub de eventos.
Clique em Salvar.
Configurar saída de trabalho
- Selecione Saídas na seção TOPOLOGIA DO TRABALHO no menu.
- Selecione + Adicionar na barra de ferramentas e selecione Armazenamento de Blobs
- Na página de configurações de saída de Armazenamento de Blobs, execute as seguintes ações:
Especifique um alias para a saída.
Selecione sua assinaturado Azure.
Selecione a conta de Armazenamento do Microsoft Azure.
Insira um nome para o contêiner que armazena os dados de saída da consulta do Stream Analytics.
Clique em Salvar.
Definir uma consulta
Depois configurar um trabalho do Stream Analytics para ler um fluxo de dados de entrada, a próxima etapa é criar uma transformação que analisa os dados em tempo real. Defina a consulta de transformação usando a Linguagem de consulta do Stream Analytics. Neste passo a passo, você define uma consulta que passa pelos dados sem executar nenhuma transformação.
Selecione Consulta.
Na janela de consulta, substitua
[YourOutputAlias]
pelo alias de saída criado anteriormente.Substitua
[YourInputAlias]
pelo alias de entrada criado anteriormente.Selecione Salvar na barra de ferramentas.
Executar o trabalho do Stream Analytics
Selecione Visão geral no menu esquerdo.
Selecione Iniciar.
Na página Iniciar trabalho, selecione Iniciar.
Aguarde até que o status do trabalho seja alterado de Iniciando para em execução.
Testar o cenário
Execute o produtor do Kafka novamente para enviar eventos para o hub de eventos.
mvn exec:java -Dexec.mainClass="TestProducer"
Confirme se você vê os dados de saída sendo gerados no armazenamento de Blobs do Azure. Você vê um arquivo JSON no contêiner com 100 linhas semelhantes às linhas de exemplo a seguir:
{"eventData":"Test Data 0","EventProcessedUtcTime":"2018-08-30T03:27:23.1592910Z","PartitionId":0,"EventEnqueuedUtcTime":"2018-08-30T03:27:22.9220000Z"} {"eventData":"Test Data 1","EventProcessedUtcTime":"2018-08-30T03:27:23.3936511Z","PartitionId":0,"EventEnqueuedUtcTime":"2018-08-30T03:27:22.9220000Z"} {"eventData":"Test Data 2","EventProcessedUtcTime":"2018-08-30T03:27:23.3936511Z","PartitionId":0,"EventEnqueuedUtcTime":"2018-08-30T03:27:22.9220000Z"}
O job do Azure Stream Analytics recebeu dados de entrada do hub de eventos e os armazenou no armazenamento de blob do Azure nesse cenário.
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 sobre os Hubs de Eventos para Apache Kafka, confira guia do desenvolvedor do Apache Kafka para Hubs de Eventos do Azure.