Este projeto ilustra como os aplicativos Quarkus podem interagir com o Apache Kafka usando MicroProfile Reactive Messaging
O aplicativo é composto por dois aplicativos que se comunicam por meio do Kafka. As interações feitas com o Kafka são gerenciadas pelo MicroProfile Reactive Messaging.
Eles podem ser iniciados no modo dev usando:
mvn -f producer quarkus:dev
e em outro terminal:
mvn -f processor quarkus:dev
NOTA: Quarkus Dev Services inicia um agente Kafka para você automaticamente.
Em seguida, abra seu navegador em http://localhost:8080/quotes.html
.
Você pode enviar solicitações de cotação e observar as cotações recebidas.
O aplicativo é composto pelos seguintes componentes:
O aplicativo produtor recebe solicitações do usuário (via HTTP) e envia solicitações de cotações ao corretor Kafka. Dois componentes principais compõem o aplicativo:
QuoteProducer
gera solicitações de cotação identificadas de forma exclusiva e as envia para o tópico Kafkaquote-requests
. Ele também consome o tópicoquotes
do Kafka e retransmite as mensagens recebidas para o navegador usando eventos enviados pelo servidor.quotes.html
envia pedidos de cotação para o terminal anterior e atualiza as cotações com os preços recebidos.
O aplicativo processor recebe solicitações de cotação do Kafka, processa-as e grava os resultados no tópico quotes
do Kafka.
O aplicativo tem uma classe principal:
QuoteProcessor
consome ids de solicitação de cotação do tópico Kafkaquote-requests
e responde de volta ao tópicoquotes
com um objetoQuote
contendo um preço aleatório.
A conexão com o Kafka é configurada no arquivo src/main/resources/application.properties
.
Para executar o aplicativo no Docker, primeiro verifique se os dois serviços foram criados:
mvn package
Em seguida, inicie o Docker Compose:
docker-compose up
Isso criará um cluster Kafka de nó único e iniciará os dois aplicativos.
Você pode compilar o aplicativo em um binário nativo usando:
mvn package -Dnative
Como você está executando no modo prod, precisa de um cluster Kafka.
Se você tiver o Docker instalado, basta executar:
export QUARKUS_MODE=native
docker-compose up --build
Como alternativa, você pode seguir as instruções do site do Apache Kafka.
Em seguida, execute os dois aplicativos, respectivamente, com:
./producer/target/kafka-quickstart-producer-1.0.0-SNAPSHOT-runner
e em outro terminal:
./processor/target/kafka-quickstart-processor-1.0.0-SNAPSHOT-runner