Exemplo de implementação de um micro serviço de stream utilizando a biblioteca Kafka Stream e Spring Boot.
#Pré Requesitos
- Java 14
- Docker instalado
#Subindo Aplicação
- Clonar repositório
- Navegar até a pasta do arquivo docker-compose.yml
- Rodar comando docker-compose up -d
- Validar se foi tudo criado e está UP com o comando docker-compose ps
- Abrir o projeto cliente-producer
- Subir as duas aplicações através da classe SpringApplication
- Abrir o projeto cadastro-consumer
- Se subir a aplicação KstreamApplication, o resultado será uma aplicação que faz join de dois tópicos.
- Se subir a aplicação KafkaStreamApplicationGenericAvroSerde, o resultado será uma aplicação lê todos os tópicos, para facilitar os teste.
-
1- Fazer uma requisição POST para o endpoint cliente
curl --location --request POST 'http://localhost:8080/cliente/' \ --form 'id="1"' \ --form 'nome="Bruno Siqueira"' \ --form 'idade="39"'
-
Fazer uma segunda requisição POST para o endpoint cliente/email
curl --location --request POST 'http://localhost:8080/cliente/email' \ --form 'clienteId="1"' \ --form 'email="email@email.com"'
-
Resultado esperado é produzir uma mensagem unificando os dados das duas requisições, ou seja os dados do cliente com um e-mail (Somente se clientId for igual Id do recurso cliente), no tópico STREAMS.CUSTOMER.EMAIL, uma forma de validar é exeutando o seguinte comando:
docker exec -ti broker ../../bin/kafka-console-consumer --bootstrap-server localhost:9092 --topic STREAMS.CUSTOMER.EMAIL --from-beginning
-
2 - O Arquivo kafka-stream.postman_collection.json contém os exemplos das chamada