2016-07-25 6 views
0

신뢰할 수있는 서비스 및 액터 인 IoTHub 및 Web Apis가있는 Azure 서비스 패브릭을 사용하며 현재 서비스의 (원격) 통신 중 오류를 처리하기 위해 "일시적 오류 처리"(TFH)를 통합하고 있습니다.서비스 패브릭 내부 통신에 대한 일시적인 오류를 처리하기 위해 재시도 정책이 필요합니까?

Azure Storage 및 SQL의 경우 이미 구현되어 있으므로 내장 된 재시도 정책을 사용하므로 정상적으로 작동합니다.

하지만 서비스 패브릭의 내부 통신은 어떻습니까? 원격 메커니즘을 통해 통신하는 서비스도 있습니다.

여기 내 질문은 :

  • 우리가 서비스 패브릭에 신뢰할 수있는 서비스와 신뢰할 수있는 배우 사이의 통신을위한 일시적인 오류를 처리해야합니까?
  • 만약 그렇다면 어떻게 할 수 있습니까? 일시적 오류 처리 응용 프로그램 만 내부 통신에 대한 재시도 정책을 구현하는 유일한 방법입니까?
  • 그렇지 않은 경우 - 서비스 패브릭은 일시적인 오류를 어떻게 처리합니까?

추가 정보 I가 이미 수집 :

This article about communication between services는 서비스 간 통신을위한 전형적인 결함 처리 재시 패턴을 설명한다. 그러나 ICommunicationClientFactory 및 ICommunicationClient 대신에 Service Remoting을 사용합니다. 나는 Service Remoting에서이 전형적인 오류 처리를 사용하는 방법을 알아낼 수 없었다.

+0

특히이 일시적인 오류 처리를 구현하는 것이 좋습니다 클라우드 세계에서 모든 리소스에 연결하는 동안. 비록 그것이 첫 번째 시도에서 성공할지라도 그것을 가지기 위해 상처를 입히지 않습니다. – Aravind

답변

1

늦은 답변이지만 사람들은 여전히 ​​답변을 찾고 있습니다 ... 아무튼, 서비스 패브릭에는 기본 일시적 오류 처리 (일시적인 오류 처리도 포함됨)가 있습니다. OperationRetrySettings를 통해 사용자 정의 할 수 있습니다. TransportSettings를 통해 다른 속성을 사용자 지정할 수도 있습니다. 다음은 이러한 설정을 사용자 정의 할 수있는 방법을 예입니다

FabricTransportSettings transportSettings = new FabricTransportSettings 
{ 
OperationTimeout = TimeSpan.FromSeconds(30) 
}; 

var retrySettings = new OperationRetrySettings(TimeSpan.FromSeconds(15), TimeSpan.FromSeconds(1), 5); 

var clientFactory = new Microsoft.ServiceFabric.Services.Remoting.FabricTransport.Client.FabricTransportServiceRemotingClientFactory(transportSettings); 

var serviceProxyFactory = new Microsoft.ServiceFabric.Services.Remoting.Client.ServiceProxyFactory((c) => clientFactory, retrySettings); 

var client = serviceProxyFactory.CreateServiceProxy<IXyzService>(new Uri("fabric:/Xyz/Service")); 

return client; 

HTH 일반적으로 // 피터