Skip to content

lucashmalcantara/apache-kafka-csharp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

apache-kafka-csharp

Como produzir e consumir mensagens no Apache Kafka com schema Avro.

Contexto

Neste exemplo, foi utilizado como base o objeto oferecido pela biblioteca React Native Background Geolocation. A situação hipotética consiste em um envio contínuo de dados de geolocalização em tempo real obtidos através de diversos dispositivos móveis. Essa situação caracteriza um Event Stream Processing (ESP), do português Processamento de Fluxo de Eventos.

Configuração do ambiente

O ambiente para o funcionamento do Apache Kafka foi configurado usando Docker. Ao executar o comando abaixo, as imagens serão baixadas e o ambiente Docker será automaticamente configurado e hospedado localmente.

docker-compose up -d

Após a conclusão da execução, também será disponibilizado acesso as seguintes ferramentas:

Definição do schema

Nota: a definição e build do schema utilizado no projeto já foi feita, porém algumas informações relevantes para essa etapa serão listadas abaixo.

  • A definição do schema Avro pode ser encontrada no seguinte link: Apache Avro™ 1.10.2 Specification
  • Para realizar o processo de geração das classes do C# baseadas no schema Avro, será necessário instalar a biblioteca Confluent.Apache.Avro.AvroGen de maneira global utilizando o comando a seguir: dotnet tool install --global Confluent.Apache.Avro.AvroGen
    • Mais informações em:
  • Feito isso, executar o seguinte comando no diretório que contém o arquivo do schema do tópico (.asvc), para para gerar as classes C# que serão utilizadas na Solution: avrogen -s ./schema.avsc .

Criação do tópico e definição do schema

Para configurar o schema corretamente, siga os seguintes passos.

  • Acessar o Confluent Dashboard, depois Cluster 1, Topics, Add a topic.

  • Acessar o tópico, clicar em Schema, Value, Set a schema e colar o schema Avro Location que está disponível na pasta avrogen-schema. Continuando na guia Schema do tópico, agora clicar em Key e definir como "string".

Notas:

  • mais informações podem ser encontradas nas seções Create a Topic e Define the Topic Schema do artigo Add Schema Registry to Kafka in Your Local Docker Environment
  • O Apache Kafka trata de definir o schema automaticamente caso não exista configuração e uma primeira mensagem seja postada no broker.

Sobre cacert.pem

O arquivo cacert.pem é um pacote de certificados CA utilizados para validar o certificado do servidor. Possui uma lista de autoridades certificadoras que são considerados como signatários aceitáveis do certificado do servidor (IBM, 2021). O seu uso no projeto é opicional bastando adicionar ou remover a variável de ambiente SSL_CA_LOCATION.

Bibliotecas necessárias no NUGET

  • Confluent.Kafka

  • Confluent.SchemaRegistry

  • Confluent.SchemaRegistry.Serdes.Avro

Referências

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

Add Schema Registry to Kafka in Your Local Docker Environment

Adding Swagger to ASP.NET Core 3.1 Web API

XML Comments Swagger .Net Core

How to include XML comments files in Swagger in ASP.NET Core

A simpler approach to building event driven software using .NET Core and Kafka e .NET Core Kafka Sample

Log event datetime with.Net Core Console logger

About

Como produzir e consumir mensagens no Apache Kafka com schema Avro.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published