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.
- No Ubuntu, execute
-
Baixar e instalar um armazenamento binário Maven
- No Ubuntu, você pode executar
apt-get install maven
para instalar o Maven.
- No Ubuntu, você pode executar
-
Git
- No Ubuntu, você pode executar
sudo apt-get install git
para instalar o Git.
- No Ubuntu, você pode executar
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: