.NET 5 + Apache Kafka: exemplos de implementação

Renato Groffe
2 min readDec 7, 2020

--

Venho há alguns meses abordando o uso do Apache Kafka como solução de mensageria em aplicações .NET. O post a seguir é um agrupador de todo este trabalho, incluindo artigos, vídeos e projetos de exemplo:

.NET + Apache Kafka: Guia de Referência

Esse suporte também está disponível para aplicações baseadas em .NET 5 e que utilizam o package Confluent.Kafka. É o que demonstra a próxima listagem, com o arquivo .csproj de uma Console Application para envio de mensagens a um tópico do Kafka:

O código deste projeto se encontra na listagem a seguir (uma pequena variação de um exemplo que implementei anteriormente com .NET Core 3.1):

Este projeto já se encontra disponível no GitHub:

.NET 5 + Console Application + Apache Kafka + Confluent.Kafka + Producer

Na próxima listagem temos um exemplo de consumo de mensagens enviadas um tópico, também empregando uma Console Application baseada no .NET 5:

O próximo link traz o repositório no GitHub para este segundo projeto:

.NET 5 + Console Application + Apache Kafka + Confluent.Kafka + Consumer

A configuração rápida de um ambiente do Apache Kafka para testes pode ser feita via Docker Compose ou através da combinação Helm + Kubernetes, alternativas que abordei nos seguintes artigos:

Apache Kafka + Kafdrop + Docker Compose: montando rapidamente um ambiente para testes

Kubernetes + Helm: primeiros passos e como criar um ambiente do Apache Kafka

Para executar a aplicação de envio de mensagens (projeto EnvioKafka) a um tópico fiz uso do comando:

dotnet run "localhost:9092" "topic-testes" "1" "dois" "III" "quarto" "5"

E dos comandos a seguir com a aplicação de consumo (ConsumoKafka), em cada um definindo um Group Id diferente de forma a simular o recebimento das mesmas mensagens por diferentes projetos:

dotnet run "localhost:9092" "topic-testes" "testes01"dotnet run "localhost:9092" "topic-testes" "testes02"

Como resultado destas ações teremos:

Deixo aqui ainda outros projetos que disponibilizei no GitHub, em que empreguei .NET 5 em conjunto com o Apache Kafka em cenários de mensageria:

ASP.NET Core 5 + API REST + Swagger + FluentValidation + Apache Kafka + Tópico + Azure App Configuration + Application Insights + Redis + SQL Server + Dockerfile + Manipulação de Ações

.NET 5 + Console Application + Injeção de Dependências + Apache Kafka + Tópico + SQL Server + Dapper.Contrib + Azure App Configuration + Serilog + Manipulação de Ações

--

--

Renato Groffe

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