Eine einfache C#/. Netto Distributed Lease/Lock Manager -Implementierung (DLM).
Inspiriert durch die https://github.com/fbeltrao/azfunctions-distributed-rocking
Installieren Sie eine der Leasingspeicherimplementierungen, indem Sie ihren ReadMe -Anweisungen folgen:
In Ihrem Controller/Service injizieren Sie den IDistributedLeaseManager und rufen Sie die TryAcquireLease -Methode an. Überprüfen Sie, ob das Ergebnis erfolgreich war - wenn es so war, können Sie mit der Operation fortfahren. Ansonsten hat jemand anderes den Mietvertrag erworben:
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)
} Wenn Sie einen anderen Leasingspeicher verwenden möchten, der vom Autor bereitgestellt wird, fügen Sie die Bibliothek DistributedLeaseManager.Core zu Ihrem Projekt hinzu und implementieren Sie die entsprechende Schnittstelle (siehe vorhandene Implementierungen als Beispiel).
Fühlen Sie sich frei, einen PR mit Ihren Änderungen zu öffnen, um sie in das Paket aufzunehmen!