Spring MVC: как установить время ожидания запроса, когда возвращаемый тип контроллера является CompletableFuture? - PullRequest
0 голосов
/ 07 сентября 2018

Если тип возвращаемого значения одного метода контроллера равен CompletableFuture, результат будет выполняться последним асинхронно, но как установить время ожидания для этого запроса, чтобы пружина прервала запрос, если он не был выполнен вовремя?

Устаревшим способом, через AsyncContext, я мог бы это сделать. Но как насчет CompletableFuture случая? Я не смог найти связанных документов.

Обратите внимание, что я знаю глобальную настройку тайм-аута по умолчанию, но мой вопрос заключается в том, как установить тайм-аут для запроса.

1 Ответ

0 голосов
/ 07 сентября 2018

Я пытаюсь ответить на мой вопрос.

Обработка CompletableFuture аналогична DeferredResult?

https://docs.spring.io/spring/docs/current/spring-framework-reference/web.html#mvc-ann-async-processing

Пружина будет делать request.startAsync() только после возвращения метода-обработчика, тогда я думаю, что единственный способ изменить время ожидания - это включить AsyncHandlerInterceptor и сделать request.getAsyncContext().setTimeout() в afterConcurrentHandlingStarted()?

https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/servlet/AsyncHandlerInterceptor.html#afterConcurrentHandlingStarted-javax.servlet.http.HttpServletRequest-javax.servlet.http.HttpServletResponse-java.lang.Object-

...