2016-07-14 2 views
1

간단한 .NET 서비스를 만들어야합니다. SourceDB의 단일 테이블에서 레코드를 읽고 각 레코드에 대해 WCF 서비스를 호출하며 레코드를 targetDB의 단일 테이블에 삽입합니다. sourceDB의 모든 레코드에는 작성 시간이 있습니다. sourceDB를 주기적으로 채우는 별도의 일괄 처리 프로세스가 있습니다..NET 서비스에서의 재시도 아키텍처

내 서비스를 방탄으로 만들려면 어떻게해야합니까? 일시적인 중단과 상관없이 sourceDB의 모든 레코드를 처리 할 수 ​​있습니다. WCF 서비스가 다운 되었습니까? 내가 적용 할 수있는 아키텍처 패턴이 있습니까?

+0

WCF 서비스를 통해 처리 한 가장 최근 레코드의 LastImportedCreationTime 변수를 유지하십시오. 레코드를 성공적으로 내보낼 때만 업데이트하십시오. 그런 다음 서비스가 루프에서 실행되면 레코드> LastImportedCreationTime 만 선택하십시오. 이렇게하면 몇 시간 동안 작동이 중단 된 경우 성공적으로 처리 된 마지막 레코드에서 쿼리하므로 누락 된 레코드를 모두 따라 잡을 수 있습니다. – Mangist

답변

1

Polly을 확인해야합니다. 다음과 같은 코드를 작성할 수 있습니다.

Policy 
    .Handle<TimeoutException>() 
    .Retry(3, (exception, retryCount, context) => 
    { 
     //access your DB(s) 
    }); 
관련 문제