Spring Boot 2.x实战53 - Spring Web MVC 25 - 异步请求(HTTP Streaming - ResponseBodyEmitter)

本文介绍了Spring Boot 2.x中使用HTTP Streaming进行异步请求的方法,通过ResponseBodyEmitter实现数据流的推送。HTTP Streaming允许服务器持续向客户端发送数据,保持HTTP连接开放。文中展示了如何创建控制器方法,利用ResponseBodyEmitter发送和关闭数据流,并通过实例解释了其工作原理。
摘要由CSDN通过智能技术生成
5.2 HTTP Streaming

DeferredResultCallable只能异步返回单个值;如果我们想有多个异步返回的话,我们可以用HTTP Streaming来实现。

HTTP Streaming是一种推送形式的数据传输技术,它通过无限期开放的HTTP连接让web服务器(tomcat)能持续向客户端(浏览器)传送数据。

HTTP Streaming下,web服务器会握住客户端的请求并让返回保持开放,这样服务器可以通过返回一直发送数据。这个请求-返回的通道会一直开启,除非我们显示的要求关闭。

5.2.1 ResponseBodyEmitter

我们可以使用ResponseBodyEmitter作为返回值返回数据对象的流。我们可以用ResponseEntity来包装ResponseBodyEmitter,这样我们可以定制返回的状态和头信息。

我们定义本里所需的控制器方法,这个例子和DeferredResult类似:

@RestController
@RequestMapping("/async")
@Slf4j
public class AsyncController {
   

    private static Map<Long, ResponseBodyEmitter> responseBodyEmitterMap = new HashMap<>();

    @GetMapping(value = "/{id}/rbe") //1
    public ResponseEntity<ResponseBodyEmitter> responseBodyEmitter
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值