using System;
using Polly;
namespace WMS.Util
{
public static class PolicyHelper
{
#region 执行策略
///
/// 重试次数策略
///
///
/// 错误处理
///
public static Policy GetRetryTimesPolicy(int time, Action exAction = null)
{
if (time <= 0) return default(Policy);
Policy policy = null;
if (exAction == null)
{
policy = Policy
.Handle()
.Retry(time);
}
else
{
policy = Policy
.Handle()
.Retry(time, (ex, count) =>
{
exAction(ex);
});
}
return policy;
}
///
/// 超时策略
///
///
///
public static Policy GetTimeOutPolicy(int milliseconds)
{
if (milliseconds <= 0) return default(Policy);
var policy = Policy
.Timeout(TimeSpan.FromMilliseconds(milliseconds));
return policy;
}
///
/// 回退策略
///
///
///
public static Policy GetFallBackPolicy(Action method)
{
if (method==null) return default(Policy);
var policy=Policy
.Handle()
.Fallback(method);
return policy;
}
#endregion
}
}