![](/img/trans.png)
[英]Spring boot webclient 2gb xml data getting io.netty.handler.timeout.ReadTimeoutException: null
[英]Spring boot webclient calling api which returns XML response having 2GB best way to call
我正在调用一个返回 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();
}
}
假设您的远程服务使用 Jackson 可以反序列化为 Some.class 的 POJO 集合进行响应,您可以执行以下操作:
@GetMapping(path = "/streaming", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
@ResponseBody
public Flux<Something> streamSomething() {
return WebClient.create()
.get().uri("http://example.org/resource")
.retrieve().bodyToFlux(Something.class)
.delaySubscription(Duration.ofSeconds(5))
.repeat();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.