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.
- No Ubuntu, execute
- Baixe e instale um arquivo binário Maven
- No Ubuntu, pode executar
apt-get install maven
para instalar o Maven.
- No Ubuntu, pode executar
- Git
- No Ubuntu, pode executar
sudo apt-get install git
para instalar o Git.
- No Ubuntu, pode executar
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:
- Espelhar um corretor Kafka em um hub de eventos
- Conectar o Apache Spark a um hub de eventos
- Conectar o Apache Flink a um hub de eventos
- Integre o Kafka Connect com um hub de eventos
- Explore samples on our GitHub (Explorar exemplos no nosso GitHub)
- Guia do desenvolvedor do Apache Kafka para Hubs de Eventos do Azure