.NET + Apache Kafka: Guia de Referência
O uso do Apache Kafka como solução de mensageria vem crescendo cada vez mais entre Desenvolvedores de Software, sendo que a plataforma .NET também não ficou alheia a esta tendência.
Neste ano de 2020 iniciei meus estudos no uso de Kafka em aplicações .NET, com a publicação de artigos, projetos de exemplo e vídeos demonstrando a adoção desta solução.
O intuito com este post é agrupar estes conteúdos gratuitos, incluindo aqui sempre que possível novos materiais cobrindo a integração .NET + Apache Kafka.
Artigos
.NET Core 3.1 + Apache Kafka: exemplos utilizando mensageria
ASP.NET Core: dicas úteis para o dia a dia de um Desenvolvedor — Parte 8
Kubernetes + Helm: primeiros passos e como criar um ambiente do Apache Kafka
Apache Kafka + Kafdrop + Docker Compose: montando rapidamente um ambiente para testes
Projetos de Exemplo
ASP.NET Core 3.1 + API REST + Apache Kafka + Tópico (Envio de Mensagens)+ Manipulação de Ações
.NET Core 3.1 + Console Application + Apache Kafka + Confluent.Kafka + Producer
.NET Core 3.1 + Console Application + Apache Kafka + Confluent.Kafka + Consumer
ASP.NET Core 3.1 + API REST + Apache Kafka + Producer
Implementando soluções de mensageria com Apache Kafka + .NET Core [Vídeo]
Aplicações Distribuídas com Apache Kafka, .NET Core e Azure Functions [Vídeo]
Suporte ao Apache Kafka em Azure Functions
A Microsoft anunciou no final de Abril/2020 o Preview da extensão de Azure Functions que suporta o Apache Kafka. Com esta funcionalidade será possível implementar Functions para o consumo de mensagens enviadas a um tópico Kafka, facilitando assim a implementação de soluções baseadas nesta tecnologia dentro do Microsoft Azure. E trazendo com isso todos os benefícios oferecidos pelas Azure Functions e o mundo Serverless, como facilidade de implementação e baixo custo!
O anúncio oficial está no link a seguir:
Announcing Preview of the Azure Functions Kafka extension
Nesta seção trago os ajustes necessários (ainda considerando a versão Preview) para se trabalhar com mensageria + Kafka em uma Function App baseada no .NET Core 3.1. O primeiro passo consiste em adicionar o package Microsoft.Azure.WebJobs.Extensions.Kafka (versão 2.0.0-beta) ao projeto:
Uma variável de ambiente com o endereço para comunicação com o Apache Kafka foi definida com o nome BrokerKafka:
No método Run de ConsumerKafka é possível observar:
- O uso do atributo KafkaTrigger, em que foram indicadas a variável de ambiente BrokerKafka (com o endereço para comunicação com um broker do Apache Kafka), o tópico que receberá as mensagens (topic-azure-functions) e o nome do Consumer Group (topic-azure-functions-group);
- O atributo KafkaEventData possibilitará o acesso aos valores enviados ao tópico topic-azure-functions;
- Essas estruturas fazem parte do namespace Microsoft.Azure.WebJobs.Extensions.Kafka.
Na próxima imagem podemos observar a Function ConsumerKafka em execução a partir do Portal do Azure:
Montando um ambiente de testes com Docker Compose
Na listagem a seguir temos um arquivo YAML do Docker Compose com as configurações necessárias para a geração de um ambiente de testes do Apache Kafka, com o acesso ao broker ocorrendo na porta 9092: