4

有没有人想分享一组与 Azure WorkerRole 错误处理相关的最佳实践?我特别喜欢您可能对如何处理持续性错误条件(即对 Web 服务等外部资源的访问暂时关闭几个小时)的任何想法。谢谢.....

4

1 回答 1

2

对于这种情况,您可以查看.NET 的异常处理操作策略应用程序块(断路器或简单的 sleep-and-retry-forever 可能会起作用)。

此应用程序块在分布式系统元素之间的连接不可靠且容易出现各种故障的情况下很有帮助。优点之一是整个应用程序的此类操作策略可以就地配置,然后通过控制反转注入适当的类。

例如:

var policy = ActionPolicy
  .Handle<CommunicationException>()
  .CircuitBreaker(1.Minutes(), 2);

var recordSet = policy
  .Get(() => remoteRepository.GetRecords(someCriteria));

Lokad.Cloud(用于 Azure)开源项目使用来自 Lokad 共享库的相同策略。

注意:操作策略与 Azure 存储的 RetryPolicies 兼容:

var policy = ActionPolicy.Handle<StorageServerException>().Retry(5);
queueService.RetryPolicy = policy.Do;
于 2009-10-17T04:48:36.373 回答