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.
- No Ubuntu, execute
- Transferir e instalar um arquivo binário do 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
É 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 test
e 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:
- Espelhar um mediador de Kafka num hub de eventos
- Ligar o Apache Spark a um hub de eventos
- Ligar o Apache Flink a um hub de eventos
- Integrar o Kafka Connect num hub de eventos
- Explore samples on our GitHub (Explorar exemplos no nosso GitHub)
- Guia para programadores do Apache Kafka para Hubs de Eventos do Azure