Partilhar via


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

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

Neste tutorial, irá aprender a:

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

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.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.
  • 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 Criar um hub de eventos para obter informações detalhadas. 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 uma cadeia de conexão de Hubs de Eventos, clone os Hubs de Eventos do Azure para repositório Kafka e navegue até a akka subpasta:

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

Run Akka Streams produtor

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

Fornecer um ponto de extremidade Kafka dos Hubs de Eventos

Produtor application.conf

Atualize os bootstrap.servers valores e sasl.jaas.config para producer/src/main/resources/application.conf direcionar o produtor para o ponto de extremidade 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 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, em seguida, execute em Java adicionando os arquivos Kafka Java Archive (JARs) 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 test, e imprime os eventos para stdout.

Execute o consumidor Akka Streams

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

Fornecer um ponto de extremidade Kafka dos Hubs de Eventos

Aplicação do consumidor.conf

Atualize os bootstrap.servers valores e sasl.jaas.config para consumer/src/main/resources/application.conf direcionar o consumidor para o ponto de extremidade 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 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 a partir do Maven (ou gere o JAR usando o Maven e, em seguida, execute em Java adicionando os JARs 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 seu produtor também estiver em execução), o consumidor começará a receber eventos do tópico test.

Confira o Guia Akka Streams Kafka para obter informações mais detalhadas sobre Akka Streams.

Próximos passos

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