1. 首页
  2. 编程语言
  3. Java
  4. SpringMVC异步处理的 5 种方式示例详解

SpringMVC异步处理的 5 种方式示例详解

上传者: 2021-06-17 14:42:34上传 PDF文件 81.55 KB 热度 14次

前段时间研究了下 diamond 的原理,其中有个重要的知识点是长连接的实现,用到了 servlet 的异步处理。异步处理最大的好处是可以提高并发量,不阻塞当前线程。其实 Spring MVC 也支持了异步处理,本文记录下相关的技术点。请求进来后,首先创建 DeferredResult 对象,设置超时时间为 60 秒。这样 Spring MVC 处理完此次请求后,不会立即返回 response 给客户端,会一直等待DeferredResult 处理完成。对于异步任务来说,需要持有DeferredResult 对象。在异步处理结束时,需要手动调用DeferredResult.setResult完成输出。调用setResult 时,数据输出写到客户端,然后触发异步完成事件执行回调。使用 DeferredResult 进行异步处理DeferredResult 这个类代表延迟结果。通常可以使用线程池、队列等配合DeferredResult 实现异步处理。根据官方描述,Spring MVC 处理流程如下:。返回的每个对象都会被 HttpMessageConverter 处理并写回输出流。

用户评论