Pregunta

¿Alguien tiene un conjunto de mejores prácticas que les gustaría compartir relacionada con el manejo de errores Azure WorkerRole? Me particulalry como cualquier idea que pueda tener sobre cómo hacer frente a las condiciones de error persistentes (es decir, donde el acceso a un recurso externo como un servicio web está temporalmente fuera durante varias horas). Gracias .....

¿Fue útil?

Solución

Es posible que echa un vistazo a Gestión de excepciones Políticas de acción Aplicación de bloque para .NET para este caso (interruptor curcuit o dormir-y-reintento para siempre sencilla podría hacer el trabajo).

Este bloque de aplicación era útil en escenarios, donde la conectividad entre los elementos del sistema distribuido no es fiable y sujetos a diversos fallos. Una de las ventajas es que tales políticas de acción para toda una aplicación se podrían configurar en su lugar y luego inyectados en las clases apropiadas a través de Inversión de control .

Por ejemplo:

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

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

Lokad.Cloud (por Azure) proyecto de código abierto utiliza mismas políticas de Lokad bibliotecas compartidas.

Nota: las políticas de acción son compatibles con RetryPolicies del almacenamiento Azure:

var policy = ActionPolicy.Handle<StorageServerException>().Retry(5);
queueService.RetryPolicy = policy.Do;
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top