Pergunta

Alguém tem um conjunto de práticas recomendadas que eles gostariam de compartilhar relacionadas ao manuseio de erros do Azure Workerrole? Eu participaria de quaisquer idéias que você possa ter sobre como lidar com condições persistentes de erro (ou seja, onde o acesso a um recurso externo como um serviço da Web está temporariamente inativo por várias horas). Obrigado.....

Foi útil?

Solução

Você pode conferir Políticas de ação de manuseio de exceção bloco de aplicativos para .NET Para este caso (o disjuntor curcuit ou o simples sono e a retralização pode fazer o trabalho).

Este bloco de aplicativos foi útil em cenários, onde a conectividade entre os elementos do sistema distribuída não é confiável e sujeita a várias falhas. Uma das vantagens é que essas políticas de ação para um aplicativo inteiro podem ser configuradas no local e depois injetadas nas classes apropriadas via Inversão de controle.

Por exemplo:

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

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

Lokad.Cloud (para o Azure) O projeto de código aberto usa as mesmas políticas das bibliotecas compartilhadas da Lokad.

NB: As políticas de ação são compatíveis com as repolicias do armazenamento do Azure:

var policy = ActionPolicy.Handle<StorageServerException>().Retry(5);
queueService.RetryPolicy = policy.Do;
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top