2014-05-16 2 views
0

이 목표를 정의한다고 가정 내가 한 : "연결이 거부"와 같은Apigee에서 대상 서버에 연결하는 데 장애를 어떻게 catch합니까?

<TargetEndpoint name="default"> 
    <PreFlow name="PreFlow"> 
     <Request/> 
     <Response/> 
    </PreFlow> 
    <HTTPTargetConnection> 
     <URL>http://host1.example.com:39282</URL> 
    </HTTPTargetConnection> 
    <PostFlow name="PostFlow"> 
     <Request/> 
     <Response/> 
    </PostFlow> 
    <FaultRules> 
     .... 
    </FaultRules> 
</TargetEndpoint> 

가 어떻게 "에 도달 할 수없는 호스트"대상 지정된 포트에서 수신되지 않을 때 발생, 또는 것이다, 대상의 오류를 잡아 않는, 어떤 주어진 호스트에 대한 경로가 없거나 DNS 이름을 해석 할 수없는 경우 발생합니다.

기본적으로 위의 FaultRules 요소 내부에 배치되는 FaultRule을 지정하는 방법에 대한 방법이 필요합니다.

<FaultRules> 
    <FaultRule name="catch1"> 
     <Condition>WHAT GOES HERE???</Condition> <!--- ??? ---> 
     <Step> 
      <Name>AssignMessage-1</Name> 
     </Step> 
    </FaultRule> 
    <FaultRule name="catch2"> 
     <Step> 
      <Name>AssignMessage-2</Name> 
     </Step> 
    </FaultRule> 
</FaultRules> 

답변

1

당신은 예를 들어 오류 (http://apigee.com/docs/api-services/content/policy-attachment-and-enforcement#policy-based-fault-handling)

을 확인하기 위해 fault.name 변수를 사용할 수 있습니다 :

<TargetEndpoint name="default"> 
    <FaultRules> 
     <FaultRule name="bad_network"> 
      <Condition>(fault.name = "ServiceUnavailable")</Condition> 
... 

내가 잘못 이름으로 '하여 ServiceUnavailable'에 도착하는 방법이었다 먼저 조건이없는 FaultRule 정책을 수립 한 다음 올바른 주소/잘못된 포트와 잘못된 주소/이름을 모두 동일한 오류 이름을 생성하고 위의 스 니펫을 사용하여 포착 할 수있는 몇 가지 '나쁜 대상'시나리오를 시도합니다.

오류 이름을 보려면 AssignMessage 정책에 fault.name 변수를 읽는 블록을 추가하고 'Variety Got'세션에 표시 될 추적에서이를 추가하거나 응답의 페이로드.

처리하려는 모든 오류를 캡처하면 되돌아 가서 프록시 결함 세션을 수정할 수 있습니다.

위의 FaultRule 세션은 대상 측에서 네트워크 오류를 catch하기 위해 대상 끝점에 있어야합니다.

건배,

리카르도

관련 문제