2017-10-31 12 views
0

私は、フォールバックメソッドを使用しないサービス層のspring-bootアプリケーションでHystrix(spring-cloud-dependenciesのバージョンCamden.SR7)を使用します。このような方法は、2秒以上実行HystrixはHystrixRuntimeExceptionを投げず、代わりに空のメッセージエラーを返します

@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:ヌル、およびREST応答は次のようになります。サービスの方法の一つは、次のようになります

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

このような応答では、実際にどのメソッドから例外がスローされたのかは不明です。私はBrixton.SR5(以前のバージョン)にspring-cloud-dependenciesバージョンを変更した場合、それは明確な応答を返す:

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

のでHystrixの新バージョン(春・クラウドの依存関係の実際に新しいバージョンが)HystrixRuntimeExceptionをスローしません。それはバグですか、あるいは明確なメッセージエラーを受け取るために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を使用していることがわかりMavenの依存関係ツリーから

<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> 
    ... 

は、私は、次のMavenの依存関係を使用します。

答えて

0

Javanica 1.5.12に更新すると、この問題が解決されます。

1.5.7から、すべて無視されない例外のHystrixRuntimeExceptionを投げ強制するオプションもあります。

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

hystrix-セリのバージョン私は使うべきでは? hystrix-javanica-1.5.6のこのようなオプションは表示されません。 –

+0

ああ、最初にバージョンについて質問する必要があります。最新の1.5.12バージョンでは、それが含まれていた時期はわかりません。 – kaos

+0

バージョン1.5.7以降です。 – kaos

関連する問題