RxNetty 下载大文件
RxNetty download large file
我正在尝试创建使用 RxNetty
下载大文件的控制器
我写了一些愚蠢的东西
@RequestMapping(method = RequestMethod.GET, path = "largeFile")
public DeferredResult<ResponseEntity<byte[]>> largeFile() throws IOException {
Observable<ResponseEntity<byte[]>> observable = RxNetty.createHttpGet(URL)
.flatMap(AbstractHttpContentHolder::getContent)
.map(data -> {
byte[] bytes = new byte[data.readableBytes()];
data.readBytes(bytes);
return new ResponseEntity<>(bytes, HttpStatus.OK);
});
DeferredResult<ResponseEntity<byte[]>> deferredResult = new DeferredResult<>();
observable.subscribe(deferredResult::setResult, deferredResult::setErrorResult);
return deferredResult;
}
然而我有以下错误:
Caused by: io.netty.handler.codec.TooLongFrameException: HTTP content length exceeded 1048576 bytes.
RxNetty 0 中的默认客户端。4.x 聚合对最大内容长度有限制的 HTTP 负载。您看到的异常是因为该限制。您可以使用 PipelineConfigurator 更改默认客户端,如本例所示:
之后有效负载将被分块到多个缓冲区中。
或者,如果您知道最大大小,则可以在配置器中使用适当的负载聚合器。
我正在尝试创建使用 RxNetty
我写了一些愚蠢的东西
@RequestMapping(method = RequestMethod.GET, path = "largeFile")
public DeferredResult<ResponseEntity<byte[]>> largeFile() throws IOException {
Observable<ResponseEntity<byte[]>> observable = RxNetty.createHttpGet(URL)
.flatMap(AbstractHttpContentHolder::getContent)
.map(data -> {
byte[] bytes = new byte[data.readableBytes()];
data.readBytes(bytes);
return new ResponseEntity<>(bytes, HttpStatus.OK);
});
DeferredResult<ResponseEntity<byte[]>> deferredResult = new DeferredResult<>();
observable.subscribe(deferredResult::setResult, deferredResult::setErrorResult);
return deferredResult;
}
然而我有以下错误:
Caused by: io.netty.handler.codec.TooLongFrameException: HTTP content length exceeded 1048576 bytes.
RxNetty 0 中的默认客户端。4.x 聚合对最大内容长度有限制的 HTTP 负载。您看到的异常是因为该限制。您可以使用 PipelineConfigurator 更改默认客户端,如本例所示:
之后有效负载将被分块到多个缓冲区中。
或者,如果您知道最大大小,则可以在配置器中使用适当的负载聚合器。