默认通信代理的OperationRetrySettings的默认值

时间:2016-07-06 18:12:36

标签: azure-service-fabric

当我像这样为我的服务创建代理时:

ServiceProxy.Create<IMyService>(new Uri("fabric:/MyApplication/MyService"));
  1. OperationRetrySettings实例有哪些值?
  2. 默认的TryHandleException实现会有任何逻辑吗?
  3. 在提到代码的情况下,是否会出现与异常情况下的重试有关的任何逻辑?
  4. 有没有办法在异常逻辑的情况下调整重试,更改默认的OperationRetrySettings的值?
  5. 我使用FabricTransportServiceRemotingListener。

2 个答案:

答案 0 :(得分:2)

根据我的观察结果,肯定没有完全涵盖所有问题,因为没有太多的信息:

  1. 一些默认值。每个退避间隔至少DefaultMaxRetryCount为10秒和2秒。我通过实例化FabricTransportServiceRemotingClientFactory并传递自定义IExceptionHandler找到了这些值。如果您使用默认ServiceProxyFactoryServiceProxy,这个属性可能没有任何意义。
  2. 看起来是的。我没有找到代理和工厂中使用的确切默认IExceptionHandler,但是如果我在服务中抛出TimeoutException异常,则会注意到多次重试。默认情况下,可能会使用ActorRemotingExceptionHandlerServiceRemotingExceptionHandler的逻辑。
  3. 是。您需要实例化ServiceProxyFactoryActorProxyFactory,通过IServiceRemotingClientFactory实施(例如,FabricTransportServiceRemotingClientFactory),指定OperationRetrySettingsIExceptionHandler,传递为一个异常处理程序,你自己的实现。

答案 1 :(得分:-1)

ServiceProxy.Create使用默认的ServiceProxyFactory。

使用默认的OperationRetrySettings创建它,在此处记录: https://msdn.microsoft.com/en-us/library/mt711955.aspx

默认的ServiceProxyFactory也使用默认服务删除客户端工厂; FabricTransportServiceRemotingClientFactory。

https://msdn.microsoft.com/en-us/library/microsoft.servicefabric.services.remoting.fabrictransport.client.fabrictransportserviceremotingclientfactory.fabrictransportserviceremotingclientfactory.aspx

根据对本文档的评论,您可以看到它使用了ServiceRemotingExeptionHandler,如下所述:

https://msdn.microsoft.com/en-us/library/microsoft.servicefabric.services.remoting.client.serviceremotingexceptionhandler.aspx