2009-10-16 44 views
4

有谁有一组最佳实践,他们想与大家分享关于Azure的WorkerRole错误处理?我特别想提一下如何处理持续性错误情况(即访问外部资源(如Web服务)暂时停止几个小时)的任何想法。谢谢.....我需要天青WorkerRole错误处理指导

回答

2

你可以看看Exception Handling Action Policies App Block for .NET此情况下(curcuit断路器或简单的睡眠和重试,永远可以做的工作)。

本申请块是在场景中,其中该分布式系统的元件之间的连接是不可靠的和受各种故障有帮助的。其中一个优点是可以对整个应用程序的这些操作策略进行配置,然后通过Inversion of Control将其注入适当的类中。

例如:

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

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

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

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

var policy = ActionPolicy.Handle<StorageServerException>().Retry(5); 
queueService.RetryPolicy = policy.Do;