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

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

Neste tutorial, ficará a saber como:

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

Nota

Este exemplo está disponível no GitHub

Pré-requisitos

Para concluir este tutorial, certifique-se de que 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.
  • Transferir e instalar um arquivo binário do 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

É necessário um espaço de nomes dos Hubs de Eventos para enviar ou receber de qualquer serviço dos Hubs de Eventos. Veja Criar um hub de eventos para obter instruções para criar um espaço de nomes e um hub de eventos. Certifique-se de que copia a cadeia de ligação dos Hubs de Eventos para utilização posterior.

Clonar o projeto de exemplo

Agora que tem a cadeia de ligação dos Hubs de Eventos, clone o Hubs de Eventos do Azure para o repositório kafka e navegue para a flink subpasta:

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

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

Fornecer um ponto final do Kafka dos Hubs de Eventos

producer.config

Atualize os bootstrap.servers valores e sasl.jaas.config no producer/src/main/resources/producer.config para direcionar o produtor para o ponto final 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 ligação do espaço de nomes dos Hubs de Eventos. Para obter instruções sobre como obter a cadeia de ligação, veja Obter uma cadeia de ligação dos Hubs de Eventos. Eis 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 a partir da linha de comandos

Para executar o produtor a partir da linha de comandos, gere o JAR e, em seguida, execute a partir do Maven (ou gere o JAR com o Maven e, em seguida, execute em Java adicionando os JAR(s) do Kafka necessários 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 a imprimir os eventos para stdout.

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

Fornecer um ponto final do Kafka dos Hubs de Eventos

consumer.config

Atualize os bootstrap.servers valores e sasl.jaas.config no consumer/src/main/resources/consumer.config para direcionar o consumidor para o ponto final 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 ligação do espaço de nomes dos Hubs de Eventos. Para obter instruções sobre como obter a cadeia de ligação, veja Obter uma cadeia de ligação dos Hubs de Eventos. Eis 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 comandos

Para executar o consumidor a partir da linha de comandos, gere o JAR e, em seguida, execute a partir do Maven (ou gere o JAR com o Maven e, em seguida, execute em Java adicionando os JAR(s) do Kafka necessários 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ça agora a receber eventos do tópico test.

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

Passos seguintes

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