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