当我像这样为我的服务创建代理时:
ServiceProxy.Create<IMyService>(new Uri("fabric:/MyApplication/MyService"));
我使用FabricTransportServiceRemotingListener。
答案 0 :(得分:2)
根据我的观察结果,肯定没有完全涵盖所有问题,因为没有太多的信息:
DefaultMaxRetryCount
为10秒和2秒。我通过实例化FabricTransportServiceRemotingClientFactory
并传递自定义IExceptionHandler
找到了这些值。如果您使用默认ServiceProxyFactory
或ServiceProxy
,这个属性可能没有任何意义。IExceptionHandler
,但是如果我在服务中抛出TimeoutException
异常,则会注意到多次重试。默认情况下,可能会使用ActorRemotingExceptionHandler
和ServiceRemotingExceptionHandler
的逻辑。ServiceProxyFactory
或ActorProxyFactory
,通过IServiceRemotingClientFactory
实施(例如,FabricTransportServiceRemotingClientFactory
),指定OperationRetrySettings
和IExceptionHandler
,传递为一个异常处理程序,你自己的实现。答案 1 :(得分:-1)
ServiceProxy.Create使用默认的ServiceProxyFactory。
使用默认的OperationRetrySettings创建它,在此处记录: https://msdn.microsoft.com/en-us/library/mt711955.aspx
默认的ServiceProxyFactory也使用默认服务删除客户端工厂; FabricTransportServiceRemotingClientFactory。
根据对本文档的评论,您可以看到它使用了ServiceRemotingExeptionHandler,如下所述: