Implementasi C#/. Simple Distributed Lease/Lock Manager (DLM) sederhana.
Terinspirasi oleh https://github.com/fbeltrao/azfunctions-distributed-locking
Instal salah satu implementasi penyimpanan sewa dengan mengikuti instruksi readme mereka:
Di dalam pengontrol/layanan Anda menyuntikkan IDistributedLeaseManager dan hubungi metode TryAcquireLease . Verifikasi jika hasilnya berhasil - jika itu maka Anda dapat melanjutkan operasi; Kalau tidak, orang lain telah memperoleh sewa:
await using var leaseResult = await leaseManager . TryAcquireLease ( resourceId , TimeSpan . FromSeconds ( 5 ) ) ;
if ( ! leaseResult . IsSuccessful )
{
// Someone else has required the lease for the resource.
// You may want to either retry the acqusition or abort the operation.
}
else
{
// You are the lease owner now and can safely process the resource.
// The lease will be released either when the leaseResult gets disposed
// or when the lease expires (in the example above, in 5 seconds)
} Jika Anda ingin menggunakan penyimpanan sewa yang berbeda dari yang disediakan oleh penulis, tambahkan perpustakaan DistributedLeaseManager.Core ke proyek Anda dan mengimplementasikan antarmuka yang sesuai (lihat salah satu implementasi yang ada sebagai contoh).
Jangan ragu untuk membuka PR dengan perubahan Anda untuk memasukkannya ke dalam paket!