QsMessaging هي مكتبة .NET 8 مصممة لإرسال واستقبال الرسائل بين الخدمات أو مكونات التطبيق الخاص بك باستخدام RabbitMQ . وهو يدعم قابلية التوسع الأفقي، مما يسمح لمثيلات متعددة من نفس الخدمة بالتعامل مع الرسائل بكفاءة.
متوفر على NuGet للتكامل السلس:
حل مراسلة بسيط وقابل للتطوير للأنظمة الموزعة.
قم بتثبيت الحزمة باستخدام الأمر التالي:
dotnet add package QsMessaging
تسجيل المكتبة أمر بسيط. أضف السطرين التاليين من التعليمات البرمجية إلى Program.cs
الخاص بك:
// Add QsMessaging (use the default configuration)...
builder . Services . AddQsMessaging ( options => { } ) ;
.. .
await host . UseQsMessaging ( ) ;
RabbitMQ
localhost
guest
guest
5672
تعريف عقد الرسالة:
public class RegularMessageContract
{
public required string MyTextMessage { get ; set ; }
}
أدخل IQsMessaging
في فصلك:
public YourClass ( IQsMessaging qsMessaging ) { }
ثم استخدمه لإرسال رسالة:
await qsMessaging . SendMessageAsync ( new RegularMessageContract { MyTextMessage = "My message." } ) ;
للتعامل مع الرسالة، قم بإنشاء معالج:
public class RegularMessageContractHandler : IQsMessageHandler < RegularMessageContract >
{
public Task < bool > Consumer ( RegularMessageContract contractModel )
{
// Process the message here
return Task . FromResult ( true ) ;
}
}
يمكنك أيضًا استخدام نمط الطلب/الاستجابة لإرسال طلب وانتظار الرد. يكون هذا مفيدًا عندما تحتاج إلى التواصل بين الخدمات وتوقع الرد.
تحديد عقود الطلب والاستجابة:
public class MyRequestContract
{
public required string RequestMessage { get ; set ; }
}
public class MyResponseContract
{
public required string ResponseMessage { get ; set ; }
}
لإرسال طلب وانتظار الرد، استخدم 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 ;
}
}
للتعامل مع الطلبات، قم بتطبيق واجهة 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 } ) ;
}
}
هذا كل شيء يا رفاق!
للحصول على وثائق مفصلة، قم بزيارة QsMessaging Wiki.