繁体   English   中英

Spring Boot webclient 调用 api,它返回具有 2GB 最佳调用方式的 XML 响应

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM