リクエストの一部としてサードパーティのサービスを呼び出すことがあるSpring Boot RESTサービスがあります。すべてのリソース(5秒と言う)にタイムアウトを設定したいので、リクエスト処理(チェーン全体、応答から応答まで)が5秒以上かかると、コントローラーは実際の応答ではなくHTTP 503で応答します。これはSpring Boot REST API - リクエストタイムアウト?
spring.mvc.async.request-timeout=5000
を設定する例えば、ちょうど春の財産だった場合、それは素晴らしいだろうが、私はそれですべての運を持っていませんでした。また、WebMvcConfigurationSupportを拡張し、configureAsyncSupportをオーバーライドしてみました。
@Override
public void configureAsyncSupport(final AsyncSupportConfigurer configurer) {
configurer.setDefaultTimeout(5000);
configurer.registerCallableInterceptors(timeoutInterceptor());
}
@Bean
public TimeoutCallableProcessingInterceptor timeoutInterceptor() {
return new TimeoutCallableProcessingInterceptor();
}
私はサードパーティのすべてのコールを手動でタイムアウトする必要があり、時間がかかり過ぎるとタイムアウト例外をスローすることが考えられます。そうですか?または、すべてのリクエストエンドポイントをカバーする、より簡単で総合的なソリューションがありますか?
のJava 8を使用している場合は、また、ラムダ式を使用することができます。 'return() - > {/ *あなたのものをここで* /}'; – demaniak