QsMessaging adalah pustaka .NET 8 yang dirancang untuk mengirim dan menerima pesan antar layanan atau komponen aplikasi Anda menggunakan RabbitMQ . Ini mendukung skalabilitas horizontal, memungkinkan beberapa contoh layanan yang sama menangani pesan secara efisien.
Tersedia di NuGet untuk integrasi yang lancar:
Solusi perpesanan sederhana dan terukur untuk sistem terdistribusi.
Instal paket menggunakan perintah berikut:
dotnet add package QsMessaging
Mendaftarkan perpustakaan itu sederhana. Tambahkan dua baris kode berikut ke Program.cs
Anda :
// Add QsMessaging (use the default configuration)...
builder . Services . AddQsMessaging ( options => { } ) ;
.. .
await host . UseQsMessaging ( ) ;
KelinciMQ
localhost
guest
guest
5672
Tentukan kontrak pesan:
public class RegularMessageContract
{
public required string MyTextMessage { get ; set ; }
}
Masukkan IQsMessaging
ke dalam kelas Anda:
public YourClass ( IQsMessaging qsMessaging ) { }
Kemudian, gunakan untuk mengirim pesan:
await qsMessaging . SendMessageAsync ( new RegularMessageContract { MyTextMessage = "My message." } ) ;
Untuk menangani pesan, buatlah pengendali:
public class RegularMessageContractHandler : IQsMessageHandler < RegularMessageContract >
{
public Task < bool > Consumer ( RegularMessageContract contractModel )
{
// Process the message here
return Task . FromResult ( true ) ;
}
}
Anda juga dapat menggunakan pola Permintaan/Respon untuk mengirim permintaan dan menunggu tanggapan. Ini berguna ketika Anda perlu berkomunikasi antar layanan dan mengharapkan tanggapan.
Tentukan kontrak permintaan dan respons:
public class MyRequestContract
{
public required string RequestMessage { get ; set ; }
}
public class MyResponseContract
{
public required string ResponseMessage { get ; set ; }
}
Untuk mengirim permintaan dan menunggu respons, gunakan 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 ;
}
}
Untuk menangani permintaan, implementasikan antarmuka 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 } ) ;
}
}
Itu saja, teman-teman!
Untuk dokumentasi terperinci, kunjungi QsMessaging Wiki.