2017-10-12 5 views
0

En regardant le Service Remoting article, je peux voir ce qui suit:Quelles sont les "exceptions transitoires" gérées par ServiceProxy?

Si des exceptions transitoires se produit, proxy retente l'appel.

Qu'est-ce qui est spécifiquement considéré comme une «exception transitoire» par le proxy?

Dans le passé, nous avons traité Délai d'attente, InvalidOperation (See here), FabricNotReadableException (See here) et FabricTransientExceptions nous-mêmes pour les opérations sur Collections fiables - Faut-il faire la même chose pour nos interactions avec d'autres services à l'aide de SF Remoting?

À titre d'exemple:

//Get Proxy 
var serviceProxy = ServiceProxy.Create<IService>(GetServiceUri(), GetPartitionKey()); 
//Make Call to method which has no internal handling for transient SF failures... 
//Should this be wrapped with a retry policy? 
var result = await serviceProxy.GetAll(); 
+1

Il est probablement quelque part [dans le code] (https://github.com/Azure/service-fabric-services-and-actors-dotnet/blob/develop/src/Microsoft.ServiceFabric.Services.Remoting/Client /ServiceRemotingExceptionHandler.cs#L118) alors peut-être obtenir le code et donc un peu de creuser. –

+0

@PeterBons Merci! Je ne me suis pas rendu compte que tout cela avait été ouvert en source ... On dirait qu'il couvre FabricNotPrimaryException quand le primaire a bougé ainsi que toutes les instances de FabricTransientException et FabricNotReadableException –

Répondre

0

Comme par le gestionnaire d'exception pour l'accès distant (ServiceRemotingExceptionHandler.cs), il semble que le proxy traitera les erreurs suivantes:

  • FabricNotPrimaryException lorsque le primaire est passé
  • FabricTransientException exceptions
  • FabricNotReadableException exceptions

Vous voudrez peut-être encore à gérer vous-même des exceptions de délai.