2017-12-08 2 views
0

내부적으로 외부 호출을하고 문제가 발생할 경우 단일 일반 서비스 예외를 throw하는 클라이언트 API jar가 있습니다. 필자는 API 호출을 통해 hystrix 래퍼를 작성했습니다. 예외를 반환하는 '사용자를 찾을 수 없음'과 같은 경우가 있습니다. 전화가 성공적이었고 서비스가 유효한 응답으로 응답했지만 hystrix는이를 실패로 간주합니다. 나는 Hystrix에서 예외를 무시할 수 있다는 것을 알고 있습니다. 서비스 호출에 의해 발생한 유일한 예외를 허용합니다. 선택적으로 예외 또는 http 상태 코드 또는 뭔가 메시지를 기반으로 서비스 호출에 의해 throw 된 예외를 무시할 수있는 방법이 있습니까?Hystrix에서 선택적으로 서비스 예외를 무시할 수 있습니까?

답변

0

외부 서비스가 서로 다른 경우에 다른 예외를 던질 경우, 당신은 아마이

@HystrixCommand(ignoreExceptions = {SomeException.class}) 

같은 그 예외는 무시할 수 있습니다하지만 당신은 그때 해결하는 가장 좋은 방법 오류 메시지에 대한 예외 기지를 무시해야하는 경우이있다 외부 통화를 시도해보십시오. catch 블록에서 무시해야하는 예외 중 하나인지 확인하십시오. 그렇다면 아무것도하지 마십시오. 이 예외를 재발행하지 않는 경우. 이 같은 것이 할 것입니다. HystrixBadRequestException에 대한 자세한 정보

@HystrixCommand(fallbackMethod = "fallBackMethod", groupKey = "CircuitBreaker", commandKey = "somekey", threadPoolKey = "somekey", 
     commandProperties = { 
      @HystrixProperty(name = "execution.isolation.thread.timeoutInMilliseconds", value = "10000"), 
      @HystrixProperty(name = "execution.timeout.enabled", value = "false"), 
      @HystrixProperty(name = "circuitBreaker.requestVolumeThreshold", value = "20"), 
      @HystrixProperty(name = "circuitBreaker.sleepWindowInMilliseconds", value = "1200000"), 
     }, 
     threadPoolProperties = { 
      @HystrixProperty(name = "coreSize", value = "30"), 
      @HystrixProperty(name = "metrics.rollingStats.timeInMilliseconds", value = "180000") 
     }) 
    public void someMethod(....){ 
      try { 
       // Call external service 
      } catch(Exception e) { 
       if(exception to be ignored) 
       throw new HystrixBadRequestException("Some message", e); 
       else 
        throw e 
      } 
    } 
+0

빠른 응답을 주셔서 감사합니다. 내 문제는 호출자에게 예외가 전달되도록하려는 것입니다. 단지 예외가 실패로 간주되지 않는 경우가 있습니다. – user9070814

+0

나는 내 대답을 수정했다. 봐. http://netflix.github.io/Hystrix/javadoc/com/netflix/hystrix/exception/HystrixBadRequestException.html 문서에 따르면 제대로 작동합니다. 내가 직접 해보지는 않았지만 – pvpkiran

관련 문제