0

fallback 메서드가없는 서비스 레이어의 spring-boot 응용 프로그램에서 Hystrix (spring-cloud-dependencies의 Camden.SR7 버전)를 사용합니다. 이러한 방법은 더 이상 이초 이상 실행Hystrix는 HystrixRuntimeException을 throw하지 않고 대신 빈 메시지 오류를 던지지 않습니다.

@HystrixCommand(commandKey = "prefs", 
     commandProperties = { @HystrixProperty(name = "execution.isolation.thread.timeoutInMilliseconds", value = "2000")}) 
@Override 
public void savePrefs(PrefsRequestParams requestParams) throws Exception { 
    ... 
} 

경우, Hystrix가 발생합니다 java.util.concurrent.TimeoutException : 널 (null), 및 REST 응답은 다음과 같이 표시됩니다 서비스의 방법 중 하나는 다음과 같습니다

{ 
    "timestamp": 1509452672714, 
    "status": 500, 
    "error": "Internal Server Error", 
    "exception": "java.util.concurrent.TimeoutException", 
    "message": "No message available", 
    "path": "/prefs" 
} 

이러한 응답을 통해 예외가 실제로 throw 된 메서드가 무엇인지 명확하지 않습니다. 내가 Brixton.SR5 (구)에 spring-cloud-dependencies 버전을 변경하는 경우, 그것은 분명한 응답을 반환 : HystrixRuntimeException를 포기하지 않습니다 Hystrix의

{ 
    "timestamp": 1509452426819, 
    "status": 500, 
    "error": "Internal Server Error", 
    "exception": "com.netflix.hystrix.exception.HystrixRuntimeException", 
    "message": "prefs timed-out and fallback failed.", 
    "path": "/prefs" 
} 

그래서 새 버전 (스프링 클라우드 종속성 실제로 새 버전). 버그입니까, 명확한 메시지 오류를 받으려면 Hystrix를 다른 방법으로 구성해야합니까? com.netflix.hystrix:hystrix-core:jar:1.5.3:compile - 나는 그것이 spring-cloud-dependencies 버전 Camden.SR7, 과 버전 Brixton.SR5에 대한 com.netflix.hystrix:hystrix-core:jar:1.5.6:compile를 사용하고 있음을 알 받는다는 종속성 트리에서

<dependency> 
    <groupId>org.springframework.cloud</groupId> 
    <artifactId>spring-cloud-starter-hystrix</artifactId> 
    <version>1.2.7.RELEASE</version> 
</dependency> 

<dependencyManagement> 
    <dependencies> 
     <dependency> 
      <groupId>org.springframework.cloud</groupId> 
      <artifactId>spring-cloud-dependencies</artifactId> 
      <version>Camden.SR7</version> 
      <type>pom</type> 
      <scope>import</scope> 
     </dependency> 
    ... 

:

나는 다음과 같은 받는다는 종속성을 사용합니다.

답변

0

Javanica 1.5.12로 업데이트하면이 문제가 해결됩니다. 1.5.7에서

전부가 아니다 무시 예외 HystrixRuntimeException을 던지는 강제 할 수있는 옵션도있다 :

@HystrixCommand(raiseHystrixExceptions = {HystrixException.RUNTIME_EXCEPTION}) 
@Override 
public void savePrefs(PrefsRequestParams requestParams) throws Exception { 
    ... 
} 
+0

내가 hystrix-javanica의 버전을 사용해야은? 나는 hystrix-javanica-1.5.6과 같은 옵션을 보지 못합니다. –

+0

맞습니다. 먼저 버전에 대해 물어보십시오. 최신 1.5.12 버전에 포함되어 있으며, 포함 된시기는 확실하지 않습니다. – kaos

+0

1.5.7 버전부터 포함되어 있습니다. – kaos