Usar o Akka Streams com Hubs de Eventos para o Apache Kafka

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

Neste tutorial, você aprenderá como:

  • Criar um namespace de Hubs de Eventos
  • Clonar o projeto de exemplo
  • Executar produtor do Akka Streams
  • Executar consumidor do Akka Streams

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

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

Executar produtor do Akka Streams

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

Fornecer um ponto de extremidade Kafka dos Hubs de Eventos

Produtor application.conf

Atualize os valores bootstrap.servers e sasl.jaas.config em producer/src/main/resources/application.conf para direcionar o produtor ao 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 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="AkkaTestProducer"

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

Executar consumidor do Akka Streams

Usando o exemplo de consumidor fornecido, receba mensagens dos Hubs de Eventos.

Fornecer um ponto de extremidade Kafka dos Hubs de Eventos

Consumidor application.conf

Atualize os valores bootstrap.servers e sasl.jaas.config em consumer/src/main/resources/application.conf para direcionar o consumidor ao 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 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="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.

Confira o Guia de Kafka do Akka Streams para encontrar informações mais detalhadas sobre o Akka Streams.

Próximas etapas

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