Kafka — Envio de Mensagens com .Net

Ederson Gessele
OPANehtech
Published in
3 min readOct 2, 2022

Cada vez mais temos necessidade de integração dos sistemas com ferramentas de mensageria como Kafka, Rabbit MQ ou Service Bus.

Neste artigo vamos abortar de uma forma simples o envio de mensagens para o Kafka através de um Micro Serviço.

Vale lembrar neste ponto, que Micro Serviços, tem por característica básica, ser autônomo.

Sobre a característica de autônomo, podemos colocar que o Micro Serviço não pode ter dependências com outros sistemas, que causam demanda de novos deploys ou desenvolvimento conforme ocorrem evolução nos outros sistemas.

Para solução deste problema, temos as plataformas de Mensageria, que nos permitem enviar informações para outros sistemas sem que haja acoplamento entre os sistemas, ou seja sem o uso de bibliotecas que causam dependência de compilação ou deploy.

Como exemplo, vamos tratar o caso de enviar um e-mail a cada pedido recebido pelo sistema Emissor de Nota Fiscal.

Algum tempo atrás uma forma de implementação deste problema era importar as bibliotecas de envio de e-mail e anexar ao seu sistema e executar a chamada a mesma, e estava resolvido.

Contudo, caso a biblioteca de envio de e-mails sofresse qualquer alteração, seria necessário executar e o deploy novamente do seu sistema Emissor de Nota Fiscal, pois o mesmo não funcionaria mais.

Quem nunca passou por este problema ?

Seguindo a arquitetura de desacoplamento entre os Sistemas, utilizamos o exemplo com a utilização da plataforma de Mensageria como Kafka.

Esta implementação pode ser mais simples onde o Sistema que Emite a Nota Fiscal, envia uma mensagem para o Micro Serviço de E-mail e que este faz o disparo, sem que ambos os sistemas possuam qualquer dependência.

Assim, caso o Micro Serviço de Envio de E-mail sofra alguma atualização, o sistema de Pedidos não precisa de um novo deploy.

Abaixo um exemplo do envio de dados para o Kafka.

Passo 1 — Criação da Interface no Program

Quando executamos o services.AddSingleton utilize a sua classe de envio de dados.

Passo 2 — Utilize a injeção de dependência

Passo 3 — Efetue a chamada pelo objeto que foi injetado

Como devemos implementar os Testes Unitários ?

Como estamos utilizando uma Interface podemos diretamente executar o Mock e fazer as validações necessárias garantindo assim a qualidade do software.

Passo 4 — Testes unitários

Concluindo

Temos uma implementação de envio de mensagens para o Kafka utilizando Interface juntamente com o desenvolvimento de testes unitários.

Obrigado por sua leitura! Te aguardo nos próximos.

--

--

Ederson Gessele
OPANehtech

Tech Lead | Software Engineer | .NET | C# | JavaScript | Microservices | Azure | AWS