Olá pessoal, tudo bem com vocês?!
Depois de quase um ano sem escrever, por vários motivos profissionais e pessoais, estou aqui escrevendo novamente. Depois também de várias pessoas me cobrarem por retornar a escrever.
Mas vamos lá, talvez seja um assunto que alguns de vocês podem já conhecer, e já usam, mas mesmo assim resolvi escrever sobre esse tema, e fazer um exemplo da utilização do Apache Kafka com AspNet Core.
Primeiramente, preciso explicar para aqueles que ainda não conhecem o Apache Kafka, para que ele serve.
O Apache Kafka, foi desenvolvido na linguagem Scala e Java, e para quem já usa o RabbitMQ para processamento de filas e troca de mensagens, o conceito é o mesmo, mas com algumas diferenças, principalmente performance, e diferente conteúdo de mensagem, como por exemplo streaming, sim isso mesmo que você leu, streaming..
O Apache Kafka, é muito mais performático que o RabbitMQ, ele lida com alta taxa de transferência, bilhões de mensagens. No seu design, foi dada uma atenção especial para o manuseio eficiente de vários consumidores do mesmo fluxo que leem em velocidades diferentes (streamimg)
Vamos fazer um exemplo, de como usar o Apache Kafka.
Primeiramente, vamos fazer a instalação do serviço do Apache Kafka em algum servidor, irei instalar o serviço no Docker. Procurei uma imagem oficial, mas não encontrei, existem algumas por ai, mas irei usar essa que deu certo wurstmeister/kafka
Segue o compose a ser executado em seu servidor com Docker.
Depois de executar o compose, pode perceber que você terá dois serviços rodando, o Apache Kafka e o Apache ZooKeeper.
Dai agora você se pergunta: Fernando, o que é esse tal de Apache ZooKeeper?
O Apache Kafka, usa o Apache ZooKeeper, para manter e coordenar os brokers. Ele é responsável por controlar o status dos nós do cluster e permite que vários clientes executem leituras e gravações simultâneas.
Com o Apache Kafka funcionando em seu Docker junto com o Apache ZooKeeper, vamos criar uma API(Producer) e um Hosted Service (Consumer) em Asp Net Core.
Nos dois projetos, vamos adicionar referência:
PM> Install-Package Confluent.Kafka -Version 1.1.0
Essa referência, irá fazer nos comunicar com o serviço do Apache Kafka.
No projeto Kafka.Producer.API, vamos criar uma nova controller de nome Producer, e adicionar esse código:
Veja que na linha 29, colocamos o nome da “fila”, de “fila_pedido”. Isso foi configurado na criação do container. No Apache Kafka, nos chamamos de Tópico.
Quer dizer, para qual canal iremos mandar a mensagem,e por qual canal iremos obter a mensagem.
Neste caso, fizemos quem irá mandar a mensagem. Agora, a seguir vamos codificar, quem irá receber a mensagem.
No projeto Kafka.Consumer.Handler, vamos criar uma classe de nome MessageHandler.cs, para ser o consumidor da mensagem.
Iremos adicionar esse código nessa classe.
Veja que na linha 20, eu adiciono de qual canal iremos ler as mensagens enviadas.
Caso tenha a mensagem, iremos adicionar no Log a mensagem recebida.
Vamos rodar a aplicação, e ir nesse endereço: http://localhost:55080/swagger/index.html
Swagger
Já adicionei o Swagger na aplicação, e vou colocar uma mensagem a ser enviada.
Quando a mensagem é enviada, o consumer recebe a mensagem:
Bom gente, está um exemplo simples de como usar o Apache Kafka em suas
aplicações, microserviços em Asp Net Core utilizando Docker para hospedar o serviço do Apache Kafka.
Para suas aplicações que terá um grande volume de mensagens, e precisa de muita performance, ai está o Apache Kafka.
Espero terem gostado, segue o fonte em meu Github
Marraia-Kafka
Um grande abraço e até a próxima!
Top comments (0)