Microservicio de ejemplo con .NET 8 + Apache Kafka (Confluent Cloud) usando Clean Architecture.
- Project.Kafka.Api: API REST que produce órdenes a Kafka
- Project.Kafka.Common: Configuración y constantes compartidas
- Project.Kafka.Core: Entidades y contratos de dominio
- Project.Kafka.Infrastructure: Implementación de base de datos (EF Core SQLite), Kafka y repositorios
- Project.Kafka.Worker: Worker que consume mensajes de Kafka y los guarda en base de datos
- .NET 8 SDK
- Cuenta en Confluent Cloud (Kafka)
- SQLite (opcional para ver la base de datos)
- (Opcional)
dotnet-efglobal tool:
dotnet tool install --global dotnet-efgit clone https://github.com/luisfbn/Project.Kafka.git
cd project.kafkaCopia el archivo de ejemplo:
cp Project.Kafka.Api/appsettings.json Project.Kafka.Api/appsettings.Development.json
cp Project.Kafka.Worker/appsettings.json Project.Kafka.Worker/appsettings.Development.jsonEdita el archivo y coloca tus credenciales de Kafka:
{
"AppSettings": {
"Environment": "Development",
"Database": {
"ConnectionString": "Data Source=../Database/orders.db"
},
"Kafka": {
"BootstrapServers": "",
"SaslUsername": "",
"SaslPassword": ""
}
},
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"AllowedHosts": "*"
}cd Project.Kafka.Api
dotnet runAbrirá Swagger en: https://localhost:7165/swagger
Desde ahí puedes enviar órdenes a Kafka.
cd Project.Kafka.Worker
dotnet runConsumirá las órdenes del topic y las guardará en la base de datos.
POST /ordersEnvía una orden al topic Kafka
{
"product": "Teclado",
"quantity": 2
}- Probar envío desde Swagger o bien desde el archivo
Project.Kafka.Api.httpen el proyectoProject.Kafka.Api
- Si aún no tienes cuenta, regístrate aquí: https://confluent.cloud/
- Asegúrate de crear una API Key, habilitar SASL/PLAIN y permitir conexiones externas.
📁 Project.Kafka
├── 📁 Api
├── 📁 Common
├── 📁 Core
├── 📁 Infrastructure
├── 📁 Worker
└── 📁 Database (se crea localmente, no se incluye en el repo)
luisfbn