文章预览
如何处理比较耗时的接口? 这题我熟,直接上异步接口,使用 Callable 、 WebAsyncTask 和 DeferredResult 、 CompletableFuture 等均可实现。 但这些方法有局限性,处理结果仅返回单个值。在某些场景下,如果需要接口异步处理的同时,还持续不断地向客户端响应处理结果,这些方法就不够看了。 Spring 框架提供了多种工具支持异步流式接口,如 ResponseBodyEmitter 、 SseEmitter 和 StreamingResponseBody 。这些工具的用法简单,接口中直接返回相应的对象或泛型响应实体 ResponseEntity ,如此这些接口就是异步的,且执行耗时操作亦不会阻塞 Servlet 的请求线程,不影响系统的响应能力。 下面将逐一介绍每个工具的使用及其应用场景。 ResponseBodyEmitter ResponseBodyEmitter 适用于要动态生成内容并逐步发送给客户端的场景,例如:文件上传进度、实时日志等,可以在任务执行
………………………………