2012-06-04 4 views
3

신뢰할 수있는 요청 응답에서 나는 응답이 인정되고 신뢰할 만하다는 것을 이해합니다. 어떤 이유로 8 회 시도 (8 회 기본 재 시도 횟수)에서 응답 메시지가 계속해서 실패하면 채널에 오류가 발생합니다.WCF 신뢰할 수있는 요청 응답 서비스 메서드에서 응답 할 때 오류를 처리하는 방법

서버 쪽 서비스 메서드에서 응답이 실패하면 작업을 수행해야하지만 서비스 메서드가 WCF 컨텍스트를 인식하지 못하기 때문에이를 어떻게 수행 할 수 있는지 알 수 없습니다.

/// <summary> 
    /// This is my service method, and does the reply in reliable request reply 
    /// </summary> 
    /// <returns></returns> 
    public IModelJob GetNextJob() 
    { 
     //dequeue the next item if there is any 
     var modelJob = _priorityQueue.Dequeue(); 

     //if all attempts to reply fail (or at least fail to be acknowledged) then when and how do I get a chance to requeue this job? 
     return modelJob; 

    } 

당신이 클라이언트와 프록시 자체에 대한 서비스 메서드를 호출 할 때 당신이 ClientBase에서 자신의 프록시를 구현할 수, 실패를 처리하기 위해 훨씬 쉽게 보인다.

나는 읽었습니다 : http://msdn.microsoft.com/en-us/library/aa480191.aspx을 (를) 검색 한 바 있지만 구체적인 내용은 찾을 수 없습니다.

답변

0

궁극적으로 지원하는 사업 운영 측면에서 생각해보십시오. 예를 들어, 서비스가 클라이언트로부터의 메시지 시퀀스를 30 분 간격으로 정기적으로 예상하면 메시지는 120 분 동안 보이지 않으면 서비스가 관리자. 이것은 귀하의 서비스를 추진하는 비즈니스 로직에서 구현 될 것입니다.

메시지를받지 못했을 때 예외를 throw 할 수없는 WCF의 단점이 아닙니다. 처음에 메시지를 예상했음을 어떻게 알 수 있습니까?

신뢰할 수있는 메시징은 HTTP 응용 프로그램이 전혀 인식하지 못하는 상태에서 TCP 재전송이 발생하는 것처럼 응용 프로그램 아래 계층에서 작동한다는 점에 유의하십시오. TCP 레벨에서 재전송이 필요하거나 여러 개가 필요하다는 사실은 수신자의 관심사가 아니며 프로토콜 스택에서 예외를 발생시키지 않습니다. 데이터를 보낸 사람에게 데이터를 보낼 수 없다는 것을 궁극적으로 감지하고 그것에 대해 뭔가를하십시오. 또는 비즈니스 수준에서 요구 사항을 구현하는 서비스의 비즈니스 로직에 대해 제가 준 예제에서 보겠습니다.

당신은 blog post에 관심이있을 수 있습니다 WS-ReliableMessaging의 단점에 대해 썼습니다.