IParitionLoadBalancingStrategy インターフェイス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
戦略では、特定の時点で現在のホストが取得する必要があるリースを定義します。
public interface IParitionLoadBalancingStrategy
type IParitionLoadBalancingStrategy = interface
Public Interface IParitionLoadBalancingStrategy
例
public class CustomStrategy : IParitionLoadBalancingStrategy
{
private string hostName;
private string hostVersion;
private TimeSpan leaseExpirationInterval;
private const string VersionPropertyKey = "version";
public IEnumerable<ILease> SelectLeasesToTake(IEnumerable<ILease> allLeases)
{
var takenLeases = this.FindLeasesToTake(allLeases);
foreach (var lease in takenLeases)
{
lease.Properties[VersionPropertyKey] = this.hostVersion;
}
return takenLeases;
}
private IEnumerable<ILease> FindLeasesToTake(IEnumerable<ILease> allLeases)
{
List<ILease> takenLeases = new List<ILease>();
foreach (var lease in allLeases)
{
if (string.IsNullOrWhiteSpace(lease.Owner) || this.IsExpired(lease))
{
takenLeases.Add(lease);
}
if (lease.Owner != this.hostName)
{
var ownerVersion = lease.Properties[VersionPropertyKey];
if (ownerVersion < this.hostVersion)
{
takenLeases.Add(lease);
}
// more logic for leases owned by other hosts
}
}
return takenLeases;
}
private bool IsExpired(ILease lease)
{
return lease.Timestamp.ToUniversalTime() + this.leaseExpirationInterval < DateTime.UtcNow;
}
}
注釈
現在所有しているリースを含め、必要に応じて返されるすべてのリースに対して新規 Properties に設定できます。
メソッド
SelectLeasesToTake(IEnumerable<ILease>) |
処理のために取得する必要があるリースを選択します。 このメソッドは、 で定期的に呼び出されます。 LeaseAcquireInterval |
適用対象
GitHub で Microsoft と共同作業する
このコンテンツのソースは GitHub にあります。そこで、issue や pull request を作成および確認することもできます。 詳細については、共同作成者ガイドを参照してください。
Azure SDK for .NET