Este proyecto demuestra la implementación de un sistema de mensajería usando RabbitMQ con .NET 8, compuesto por una aplicación productora y una aplicación consumidora.
- Propósito: Envía mensajes a RabbitMQ
- Funcionalidad:
- Se conecta a RabbitMQ usando la librería
Simone.Common.RabbitMQ - Publica un mensaje "Hello, RabbitMQ!" con un CorrelationId único
- Espera confirmación del usuario antes de terminar
- Se conecta a RabbitMQ usando la librería
- Propósito: Escucha y procesa mensajes de RabbitMQ
- Funcionalidad:
- Se mantiene ejecutándose continuamente
- Escucha mensajes de la cola configurada
- Registra cada mensaje recibido con su CorrelationId
- Envía acknowledgment automático de mensajes procesados
- .NET 8.0 SDK
- Servidor RabbitMQ ejecutándose
- Acceso a las credenciales de RabbitMQ
Ambas aplicaciones requieren configurar el archivo appsettings.json con las credenciales y configuración de RabbitMQ:
{
"RabbitMQ": {
"Host": "localhost",
"Username": "rabbitmq_user",
"Password": "rabbitmq_password",
"DefaultExchange": "RabbitMQ-Test",
"Errors": {
"Name": "Errors",
"Exchange": "RabbitMQ-Errors"
}
},
"Logging": {
"LogLevel": {
"Default": "Information"
}
}
}{
"RabbitMQ": {
"Host": "localhost",
"Username": "rabbitmq_user",
"Password": "rabbitmq_password",
"Queues": {
"RabbitMQ-Test": "RabbitMQ-Test-Consumer"
},
"Errors": {
"Name": "Errors",
"Exchange": "RabbitMQ-Errors"
}
},
"Logging": {
"LogLevel": {
"Default": "Debug"
}
}
}| Parámetro | Descripción | Ejemplo |
|---|---|---|
Host |
Dirección IP o dominio del servidor RabbitMQ | localhost o 172.100.0.88 |
Username |
Usuario para autenticación en RabbitMQ | rabbitMQ_admin |
Password |
Contraseña del usuario | v3ryStr0ngP@ssw0rd |
Exchanges |
Lista de exchanges para el productor | ["RabbitMQ-Test"] |
Queues |
Mapeo de colas para el consumidor | {"RabbitMQ-Test": "RabbitMQ-Test-Consumer"} |
Tip
En caso de que se esté ejecutando RabbitMQ desde Simone.Infrastructure, se puede utilizar localhost como valor en el parámetro Host o la IP expuesta por el contenedor.
dotnet build ConsumerApp/ConsumerApp.csproj
dotnet build ProducerApp/ProducerApp.csprojcd ConsumerApp
dotnet runEl consumidor se mantendrá ejecutándose y mostrará logs cuando reciba mensajes.
cd ProducerApp
dotnet runEl productor enviará un mensaje y esperará que presiones una tecla para terminar.
Terminal 1 (Consumidor):
info: Microsoft.Hosting.Lifetime[0]
Application started.
info: ConsumerApp.Consumer[0]
[abc123xyz] Mensaje recibido: Hello, RabbitMQ!
Terminal 2 (Productor):
info: ProducerApp.Publisher[0]
[abc123xyz] Message Hello, RabbitMQ! sent successfully.
Mensaje enviado. Presiona cualquier tecla para salir...
Simone.Common.RabbitMQ(v2.9.1) - Cliente RabbitMQMicrosoft.Extensions.Hosting(v9.0.0) - Hosting para aplicaciones .NET
- Verificar que el servidor RabbitMQ esté ejecutándose
- Confirmar que Host, Username y Password son correctos
- Verificar conectividad de red al servidor RabbitMQ
- Ejecutar desde el directorio correcto (
cd ConsumerAppocd ProducerApp)
- Verificar nivel de logging en
appsettings.json