Spring Boot REST API - 请求超时?
2022-08-31 23:53:07
我有一个Spring Boot REST服务,有时作为请求的一部分调用第三方服务。我想在我的所有资源上设置一个超时(假设5秒),这样如果任何请求处理(从传入到响应的整个链)花费的时间超过5秒,我的控制器使用HTTP 503而不是实际响应进行响应。如果这只是一个春天的属性,例如设置,那就太好了
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();
}
没有任何运气。
我怀疑我必须手动计时所有第三方调用,如果它们花费的时间太长,请抛出超时异常。是吗?或者有没有更简单、更全面的解决方案来涵盖我的所有请求端点?