【发布时间】:2021-06-29 16:34:09
【问题描述】:
我正在调用一个返回 xm 响应的 api,但该响应有大约 2GB 数据,请您帮忙我们应该如何以有效的方式调用它,现在它未能超过数据缓冲区限制
下面是 XML dto 类
@XmlRootElement(name = "Result")
@lombok.Data
@AllArgsConstructor
@NoArgsConstructor
public class Result{
private List<Data> dataLisst;
}
@XmlRootElement(name = "Data")
@lombok.Data
@AllArgsConstructor
@NoArgsConstructor
public class Data {
private Integer id;
private String dataVersion;
private String name;
}
以下是我将 Webclient 称为其单对象响应的方式
@Service
public class WebclientXML {
public Result getXMLResult() {
return getWebClient()
.get()
.uri("/xml-resp/res")
.retrieve()
.bodyToMono(Result.class)
.block();
}
private WebClient getWebClient() {
return WebClient.builder()
.baseUrl("http://<host>:port")
.build();
}
}
【问题讨论】:
-
由于您不想将 2GB 的数据编组到内存中,因此在处理响应正文时需要使用 streaming。您应该自己研究如何做到这一点:关键字
streaming。
标签: java xml spring-boot spring-webclient