我调用一个rest服务,它在第一次调用时返回一个对象的ID。除了要读取的对象的ID之外,它还给出了字节长度。
但是,返回的CSV数据最多可达200,000行。这会导致内存不足异常,因为从Java程序中读取所有200,000行来自休息调用的内存。
返回的LinkedList
是弹簧模板返回的CSV结构。问题是,当等效的CSV文件超过200,000行时,RestTemplate
无法保留它,因此我会遇到内存不足的问题。
还有其他方法可以操纵Stream
API来处理可以逐步阅读的UriComponentsBuilder builder = UriComponentsBuilder.newInstance();
builder.scheme("https).pathSegment("/file-object").host(hostName);
// Call the third-party Rest API
ResponseEntity<?> responseEntity =
restTemplate.exchange(
builder.queryParam("fileId", "fjr666eH").build().toUri(),
HttpMethod.GET,
new HttpEntity(httpAuthorizationHeaders("UID","XFCode:66w000")),
Object.class
);
// CSV file is returned by Spring as a linked list. But since data is
// large I get an OOM exception
LinkedHashMap<String, Object> map =
(LinkedHashMap<String, Object>) responseEntity.getBody();
数据吗?
GET https://github.com/login/oauth/authorize
答案 0 :(得分:0)
我能够使用Spring Rest API提供的Streaming功能。我使用了SimpleClientHttpRequestFactory,BufferedReader,并且能够将块大小设置为一次读取。