是否有人有一组他们想要分享的与Azure WorkerRole错误处理相关的最佳实践?我特别指出你可能有关于如何处理持久性错误条件的任何想法(即,对Web服务等外部资源的访问暂时停机数小时)。感谢.....
答案 0 :(得分:2)
你可以查看Exception Handling Action Policies App Block for .NET这个案例(curcuit breaker或简单的sleep-and-retry-forever可能会起作用)。
此应用程序块在场景中很有用,在这些场景中,分布式系统的元素之间的连接不可靠并且会受到各种故障的影响。其中一个优点是可以在适当的位置配置整个应用程序的此类操作策略,然后通过Inversion of Control将其注入适当的类。
例如:
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;