У меня есть служба загрузки REST Spring, которая иногда вызывает услуги сторонних поставщиков как часть запроса. Я хотел бы установить тайм-аут для всех моих ресурсов (пусть говорят 5 секунд), так что если любая обработка запроса (целая цепочка, от входящего ответа) занимает более 5 секунд, мои контроллеры отвечают HTTP 503 вместо фактического ответа, Было бы замечательно, если бы это было просто свойство Spring, например установка
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();
}
без везения.
Я подозреваю, что мне приходится вручную набирать все мои сторонние звонки, и если они задерживаются слишком долго, выбросьте исключение тайм-аута. Это правильно? Или есть ли более простое целостное решение, которое охватывает все мои конечные точки запроса?