QsMessaging es una biblioteca .NET 8 diseñada para enviar y recibir mensajes entre servicios o componentes de su aplicación utilizando RabbitMQ . Admite escalabilidad horizontal, lo que permite que múltiples instancias del mismo servicio manejen mensajes de manera eficiente.
Disponible en NuGet para una integración perfecta:
Una solución de mensajería sencilla y escalable para sistemas distribuidos.
Instale el paquete usando el siguiente comando:
dotnet add package QsMessaging
Registrar la biblioteca es sencillo. Agregue las siguientes dos líneas de código a su Program.cs
:
// Add QsMessaging (use the default configuration)...
builder . Services . AddQsMessaging ( options => { } ) ;
.. .
await host . UseQsMessaging ( ) ;
ConejoMQ
localhost
guest
guest
5672
Defina un contrato de mensaje:
public class RegularMessageContract
{
public required string MyTextMessage { get ; set ; }
}
Inyecte IQsMessaging
en su clase:
public YourClass ( IQsMessaging qsMessaging ) { }
Luego, úsalo para enviar un mensaje:
await qsMessaging . SendMessageAsync ( new RegularMessageContract { MyTextMessage = "My message." } ) ;
Para manejar el mensaje, cree un controlador:
public class RegularMessageContractHandler : IQsMessageHandler < RegularMessageContract >
{
public Task < bool > Consumer ( RegularMessageContract contractModel )
{
// Process the message here
return Task . FromResult ( true ) ;
}
}
También puede utilizar el patrón Solicitud/Respuesta para enviar una solicitud y esperar una respuesta. Esto es útil cuando necesita comunicarse entre servicios y esperar una respuesta.
Definir los contratos de solicitud y respuesta:
public class MyRequestContract
{
public required string RequestMessage { get ; set ; }
}
public class MyResponseContract
{
public required string ResponseMessage { get ; set ; }
}
Para enviar una solicitud y esperar una respuesta, utilice RequestResponse<TRequest, TResponse>
:
public class MyService
{
private readonly IQsMessaging _qsMessaging ;
public MyService ( IQsMessaging qsMessaging )
{
_qsMessaging = qsMessaging ;
}
public async Task < MyResponseContract > SendRequestAsync ( MyRequestContract request )
{
var response = await _qsMessaging . SendRequestResponseAsync < MyRequestContract , MyResponseContract > ( request ) ;
return response ;
}
}
Para manejar solicitudes, implemente la interfaz IQsRequestResponseHandler<TRequest, TResponse>
:
public class MyRequestHandler : IQsRequestResponseHandler < MyRequestContract , MyResponseContract >
{
public Task < MyResponseContract > Handle ( MyRequestContract request )
{
// Process the request and create a response
return Task . FromResult ( new MyResponseContract { ResponseMessage = "Response to: " + request . RequestMessage } ) ;
}
}
¡Eso es todo, amigos!
Para obtener documentación detallada, visite QsMessaging Wiki.