Utilizar o Akka Streams com os Hubs de Eventos para o Apache Kafka

Este tutorial mostra-lhe como ligar o Akka Streams através do suporte dos Hubs de Eventos para o Apache Kafka sem alterar os clientes do protocolo ou executar os seus próprios clusters.

Neste tutorial, ficará a saber como:

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

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.8+
    • 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 informações detalhadas. 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 uma cadeia de ligação dos Hubs de Eventos, clone o Hubs de Eventos do Azure para o repositório kafka e navegue para a akka subpasta:

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

Executar o produtor do Akka Streams

Com o exemplo de produtor fornecido do Akka Streams, envie mensagens para o serviço Hubs de Eventos.

Fornecer um ponto final do Kafka dos Hubs de Eventos

Application.conf do produtor

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

akka.kafka.producer {
    #Akka Kafka producer properties can be defined here


    # Properties defined by org.apache.kafka.clients.producer.ProducerConfig
    # can be defined in this configuration section.
    kafka-clients {
        bootstrap.servers="{YOUR.EVENTHUBS.FQDN}:9093"
        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="AkkaTestProducer"

O produtor começa a enviar eventos para o hub de eventos no tópico teste imprime os eventos para stdout.

Executar o consumidor do Akka Streams

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

Fornecer um ponto final do Kafka dos Hubs de Eventos

Aplicação de consumidor.conf

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

akka.kafka.consumer {
    #Akka Kafka consumer properties defined here
    wakeup-timeout=60s

    # Properties defined by org.apache.kafka.clients.consumer.ConsumerConfig
    # defined in this configuration section.
    kafka-clients {
       request.timeout.ms=60000
       group.id=akka-example-consumer

       bootstrap.servers="{YOUR.EVENTHUBS.FQDN}:9093"
       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="AkkaTestConsumer"

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 kafka do Akka Streams para obter informações mais detalhadas sobre o Akka Streams.

Passos seguintes

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