Partilhar via


Utilizar o Apache Flink com os Hubs de Eventos do Azure para Apache Kafka

Este tutorial mostra como conectar o Apache Flink a um hub de eventos sem alterar seus clientes de protocolo ou executar seus próprios clusters. Para obter mais informações sobre o suporte dos Hubs de Eventos para o protocolo de consumidor Apache Kafka, consulte Hubs de Eventos para Apache Kafka.

Neste tutorial, irá aprender a:

  • Criar um espaço de nomes dos Hubs de Eventos
  • Clonar o projeto de exemplo
  • Executar produtor Flink
  • Executar Flink consumidor

Nota

Este exemplo está disponível no GitHub

Pré-requisitos

Para concluir este tutorial, verifique se você tem os seguintes pré-requisitos:

  • Leia o artigo Hubs de Eventos para o Apache Kafka.
  • Uma subscrição do Azure. Se não tiver uma, crie uma conta gratuita antes de começar.
  • Java Development Kit (JDK) 1.7+
    • No Ubuntu, execute apt-get install default-jdk para instalar o JDK.
    • Certifique-se de que define a variável de ambiente JAVA_HOME para apontar para a pasta onde está instalado o JDK.
  • Baixe e instale um arquivo binário Maven
    • No Ubuntu, pode executar apt-get install maven para instalar o Maven.
  • Git
    • No Ubuntu, pode executar sudo apt-get install git para instalar o Git.

Criar um espaço de nomes dos Hubs de Eventos

Um namespace de Hubs de Eventos é necessário para enviar ou receber de qualquer serviço de Hubs de Eventos. Consulte Criando um hub de eventos para obter instruções sobre como criar um namespace e um hub de eventos. Certifique-se de copiar a cadeia de conexão dos Hubs de Eventos para uso posterior.

Clonar o projeto de exemplo

Agora que você tem a cadeia de conexão Hubs de Eventos, clone os Hubs de Eventos do Azure para repositório Kafka e navegue até a flink subpasta:

git clone https://github.com/Azure/azure-event-hubs-for-kafka.git
cd azure-event-hubs-for-kafka/tutorials/flink

Usando o exemplo de produtor Flink fornecido, envie mensagens para o serviço Hubs de Eventos.

Fornecer um ponto de extremidade Kafka dos Hubs de Eventos

produtor.config

Atualize os bootstrap.servers valores e sasl.jaas.config para producer/src/main/resources/producer.config direcionar o produtor para o ponto de extremidade Kafka dos Hubs de Eventos com a autenticação correta.

bootstrap.servers={YOUR.EVENTHUBS.FQDN}:9093
client.id=FlinkExampleProducer
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

Substitua {YOUR.EVENTHUBS.CONNECTION.STRING} pela cadeia de conexão do namespace Hubs de Eventos. Para obter instruções sobre como obter a cadeia de conexão, consulte Obter uma cadeia de conexão de Hubs de Eventos. Aqui está um exemplo de configuração: sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="$ConnectionString" password="Endpoint=sb://mynamespace.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=XXXXXXXXXXXXXXXX";

Execute o produtor a partir da linha de comando

Para executar o produtor a partir da linha de comando, gere o JAR e, em seguida, execute a partir do Maven (ou gere o JAR usando o Maven e, em seguida, execute em Java adicionando o(s) JAR(s) Kafka necessário(s) ao classpath):

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

O produtor começará agora a enviar eventos para o hub de eventos no tópico test e imprimir os eventos para stdout.

Usando o exemplo de consumidor fornecido, receba mensagens do hub de eventos.

Fornecer um ponto de extremidade Kafka dos Hubs de Eventos

consumer.config

Atualize os bootstrap.servers valores e sasl.jaas.config para consumer/src/main/resources/consumer.config direcionar o consumidor para o ponto de extremidade Kafka dos Hubs de Eventos com a autenticação correta.

bootstrap.servers={YOUR.EVENTHUBS.FQDN}:9093
group.id=FlinkExampleConsumer
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

Substitua {YOUR.EVENTHUBS.CONNECTION.STRING} pela cadeia de conexão do namespace Hubs de Eventos. Para obter instruções sobre como obter a cadeia de conexão, consulte Obter uma cadeia de conexão de Hubs de Eventos. Aqui está um exemplo de configuração: sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="$ConnectionString" password="Endpoint=sb://mynamespace.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=XXXXXXXXXXXXXXXX";

Executar o consumidor a partir da linha de comando

Para executar o consumidor a partir da linha de comando, gere o JAR e, em seguida, execute de dentro do Maven (ou gere o JAR usando o Maven e, em seguida, execute em Java adicionando o(s) JAR(s) Kafka necessário(s) ao classpath):

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

Se o hub de eventos tiver eventos (por exemplo, se o produtor também estiver em execução), o consumidor começará a receber eventos do tópico test.

Consulte o Guia do Conector Kafka da Flink para obter informações mais detalhadas sobre como ligar a Flink a Kafka.

Próximos passos

Para saber mais sobre os Hubs de Eventos para Kafka, consulte os seguintes artigos: