重置Polly重试计数

时间:2019-09-05 15:11:36

标签: polly

我已经定义了一个Polly策略,以便在发生异常时执行重试。 该政策定义为

policy = Policy.Handle<ReconnectException>().Retry(retryCount);

然后我用

调用我的方法
policy.Execute(()=>SendMessageWithRetryPolicy(message));

如何执行重置操作,以便如果将我的MaxRetryCount设置为5,并且在第3步成功清除了消息,我又有5步要执行?

预先感谢

1 个答案:

答案 0 :(得分:1)

您不需要通过Polly重试策略在两次调用之间重设重试计数。通过该策略的每个单独执行均有权获得该策略上配置的完整重试计数。

如果您配置:

protocol LoaderDelegate: class {
  func LoadData(_ controller: SearchPhotosViewController)
}

class LoaderData: LoaderDelegate {
  func LoadData() {
    print("Hello from LoaderData")
  }
}

class SearchPhotosViewController: UICollectionViewController {

  // MARK: - Properties
  weak var delegate: LoaderDelegate?

  override func viewDidLoad() {
    super.viewDidLoad()
    print("Hello from viewDidLoad")
    delegate?.LoadData()
  }

}

然后通过该策略执行每次操作:

policy = Policy.Handle<ReconnectException>().Retry(retryCount); // where retryCount == 5

将有权进行6次尝试(1次初始尝试+ 5次重试)。如果第一次执行使用3次重试,则下一次执行仍有权进行6次尝试(1次初始尝试+ 5次重试)。