如何在spring mvc中使用带有deffered结果的超时?

时间:2017-04-09 13:56:54

标签: java spring-mvc spring-boot timeout servlet-3.0

我找到了以下文章:Spring MVC 3.2预览:介绍Servlet 3,异步支持

示例:

@RequestMapping("/quotes")
@ResponseBody
public DeferredResult<String> quotes() {
  DeferredResult<String> deferredResult = new DeferredResult<String>();
  // Add deferredResult to a Queue or a Map...
  return deferredResult;
}


// In some other thread...    <-- important phrase
 deferredResult.setResult(data);
// Remove deferredResult from the Queue or Map

但是如果结果没有在1分钟内设置,我需要 - 应该返回错误结果。

如何根据我的要求更改此示例?

1 个答案:

答案 0 :(得分:2)

DeferredResult具有可用于您的要求的构造函数。

 /**
         * Create a DeferredResult with a timeout value and a default result to use
         * in case of timeout.
         * @param timeout timeout value in milliseconds (ignored if {@code null})
         * @param timeoutResult the result to use
         */
        public DeferredResult(Long timeout, Object timeoutResult) {
            this.timeoutResult = timeoutResult;
            this.timeout = timeout;
        }