Java + Kafka, Como essa parceria fucniona ?
O que é kafka e como ele funciona ?
- spring-topic-dukes-notification --> Este tópico pode ser utilizado para notificações que devem ser enviadas após uma regra de negócio específica ser acionada no sistema.
- spring-topic-dukes-saga --> Um tópico que pode ser utilizado, por exemplo, para gerenciar eventos após a inserção de um novo produto.
Mesmo dentro de um mesmo tópico, as mensagens podem ser armazenadas em diferentes partições. Isso significa que um consumidor pode estar lendo mensagens da partição 0, enquanto outro pode estar consumindo mensagens de outra partição dentro do mesmo tópico, desta forma o mecanismo garante que o Kafka possa processar grandes volumes de dados de forma eficiente, distribuindo a carga entre múltiplos consumidores.
1. Procucers && Consumers
Agora que explicamos os tópicos e partições, podemos falar sobre os produtores (quem envia mensagens para o Kafka) e os consumidores (quem recebe essas mensagens).
- Produtor (Producer): Envia mensagens para um tópico específico. Pode definir para qual partição a mensagem será enviada.
- Consumidor (Consumer): Lê as mensagens de um tópico. Pode fazer parte de um grupo de consumidores, o que permite que várias instâncias processem mensagens em paralelo.
2. Retenção de Mensagens
3. Confiabilidade
O Kafka garante que as mensagens não se percam através de três conceitos:
- Replicação: Cada partição pode ter réplicas em diferentes servidores.
- Confirmação de mensagens: O produtor pode exigir que o Kafka confirme quando a mensagem foi gravada.
- Commit de Offset: Os consumidores registram até onde já leram para evitar duplicação ou perda de mensagens.
Kafka + Java
Escolhendo uma Interface para Monitoramento
O Kafka, por padrão, não possui uma interface gráfica, mas existem algumas ferramentas que ajudam a visualizar os tópicos, mensagens e consumidores de forma mais intuitiva. Algumas das principais opções são:
- Redpanda Console – Uma interface moderna e simples para visualizar tópicos e mensagens.
- Kafka UI – Uma ferramenta leve para monitorar consumidores e tópicos.
Para um ambiente de desenvolvimento, o Redpanda Console é bem legal, é fácil de configurar e tem uma boa experiência visual para acompanhar os eventos no Kafka. Segue aqui tambem o kafka e seu repositorio link.
Subindo o Kafka e a Interface Visual
Para rodar o Kafka localmente e visualizar as mensagens de forma mais prática, podemos utilizar o Docker para subir o Kafka e uma ferramenta gráfica. Isso ajuda muito para fazer o gerenciamento e monitoramento dos tópicos sem precisar de configurações mt complexa.
Com o Kafka rodando, conseguimos acessar a interface gráfica e visualizar em tempo real as mensagens que são enviadas e consumidas pelos nossos sistemas.
Aqui um exemplo de como fiz subindo pelo Docker Compose:
Configurando o Kafka no Java
Depois de garantir que o servidor Kafka está funcionando, o próximo passo é configurar nossa aplicação Java para se conectar a ele.
No Spring Boot, por exemplo, essa configuração pode ser feita no arquivo de propriedades da aplicação. Basicamente, é necessário informar:
- O endereço do servidor Kafka
- Como as mensagens serão serializadas e desserializadas
- Qual será o grupo de consumidores
Neste caso especifico estou usando o mongo como banco e veja que temos dois tópicos que são utilizados o start-saga que usei para receber produtos quando criados, já o notify-ending uso para disparar a mensagem para o consumer que o order-group pretendo mais pra frente postar esse projeto para que possam ver na pratica como funciona.
Essas configurações garantem que nossa aplicação conseguirá publicar e consumir mensagens corretamente dentro dos tópicos definidos.
Back-end Developer Java | Spring Boot | Quarkus | Microservices | SQL & NOSQL | SOLID | Design Patterns
Comments
Post a Comment