Usar o Apache Flink com Hubs de Eventos do Azure para o 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 de hubs de eventos para o protocolo de consumidor do Apache Kafka, consulte Hubs de eventos para o Apache Kafka.

Neste tutorial, você aprenderá como:

  • Criar um namespace de Hubs de Eventos
  • Clonar o projeto de exemplo
  • Executar o produtor Flink
  • Executar o consumidor Flink

Observação

Este exemplo está disponível no GitHub

Pré-requisitos

Para concluir este tutorial, é necessário atender aos seguintes pré-requisitos:

  • Leia o artigo Hubs de Eventos para o Apache Kafka.
  • Uma assinatura do Azure. Se você 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.
    • Defina a variável de ambiente JAVA_HOME para apontar para a pasta onde o JDK está instalado.
  • Baixar e instalar um armazenamento binário Maven
    • No Ubuntu, você pode executar apt-get install maven para instalar o Maven.
  • Git
    • No Ubuntu, você pode executar sudo apt-get install git para instalar o Git.

Criar um namespace dos Hubs de Eventos

É necessário um namespace dos Hubs de Eventos para enviar ou receber de qualquer serviço de Hubs de Eventos. Para obter instruções sobre como criar um namespace e um hub de eventos, consulte Criar um hub de eventos. Certifique-se de copiar a cadeia de caracteres de conexão dos Hubs de Eventos para uso posterior.

Clonar o projeto de exemplo

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

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

Seguindo o exemplo do produtor do Flink, envie mensagens para o serviço do Hubs de Eventos.

Fornecer um ponto de extremidade Kafka dos Hubs de Eventos

producer.config

Atualize os valores bootstrap.servers e sasl.jaas.config em producer/src/main/resources/producer.config para direcionar o produtor ao 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 seu namespace dos Hubs de Eventos. Para ver as instruções sobre como obter uma cadeia de conexão, confira Obter cadeia de conexão para 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 produtor na linha de comando

Para executar o produtor na linha de comando, gere o JAR e execute no Maven (ou gere o JAR usando o Maven e execute no Java adicionando os JARs do Kafka necessários ao caminho de classe):

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

O produtor começará a enviar eventos para o hub de eventos no tópico test e a imprimi-los no 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 valores bootstrap.servers e sasl.jaas.config em consumer/src/main/resources/consumer.config para direcionar o consumidor ao 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 seu namespace dos Hubs de Eventos. Para ver as instruções sobre como obter uma cadeia de conexão, confira Obter cadeia de conexão para 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 na linha de comando

Para executar o consumidor na linha de comando, gere o JAR e execute no Maven (ou gere o JAR usando o Maven e execute no Java adicionando os JARs do Kafka necessários ao caminho de classe):

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 receberá eventos do tópico test.

Confira Guia de conector Kafka do Flink para saber informações mais detalhadas sobre como conectar o Flink ao Kafka.

Próximas etapas

Para saber mais sobre os Hubs de Eventos para o Kafka, confira os artigos a seguir: