Domanda

Qualcuno ha un insieme di best practice che desideri condividere relative al trattamento degli errori Azure WorkerRole? Mi piacerebbe particulalry come tutte le idee che potete avere su come trattare con le condizioni di errore persistenti (cioè in cui l'accesso a una risorsa esterna, come un servizio web è temporaneamente inattivo per diverse ore). Grazie .....

È stato utile?

Soluzione

Si potrebbe verificare Politiche Gestione delle eccezioni di azione App Block per .NET per questo caso (interruttore curcuit o semplice sleep-and-retry-forever potrebbe fare il lavoro).

Questo blocco applicazione è stata utile in scenari, in cui la connettività tra gli elementi del sistema distribuito è inaffidabile e soggetta a vari fallimenti. Uno dei vantaggi è che tali politiche azione per un'intera applicazione potrebbe essere configurato in posizione e poi iniettati nelle classi appropriate tramite Inversion of Control .

Ad esempio:

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

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

Lokad.Cloud (per Azure) progetto open source utilizza stesse politiche da Lokad librerie condivise.

NB: le politiche di azione siano compatibili con RetryPolicies della Azure:

var policy = ActionPolicy.Handle<StorageServerException>().Retry(5);
queueService.RetryPolicy = policy.Do;
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top