.NET + Apache Kafka: Guia de Referência

Renato Groffe
3 min readMay 10, 2020

--

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.

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:

--

--

Renato Groffe
Renato Groffe

Written by Renato Groffe

Microsoft Most Valuable Professional (MVP), Multi-Plataform Technical Audience Contributor (MTAC), Software Engineer, Technical Writer and Speaker