Spring Boot 微服务之间通过FeignClient进行大文件下载:
来源:互联网 发布:崩坏学园2官方淘宝 编辑:程序博客网 时间:2024/06/09 20:43
使用FeignClient作为中间件进行一个微服务之间的调用的时候,一般的服务请求是没有什么问题,但是,当下载大文件,会出现:java heap space
也就是堆溢出问题。
具体解决方案如下:
1、首先是service层返回ResponseEntity<Resource>
2、@FeignClient的remote接口返回Response对象(FeignClient提供的Response对象)
3、前端层获取Response对象之后,可以获取headers和body信息.代码如下:
Response response = exploreServiceRemote.downPackSensorDataFile(recordCode, uniqueCode);Map<String, Collection<String>> headers = response.headers();HttpHeaders httpHeaders = new HttpHeaders();headers.forEach((key, values) -> { List<String> headerValues = new LinkedList<>(); headerValues.addAll(values); httpHeaders.put(key, headerValues);});Response.Body body = response.body();try { InputStream inputStream = body.asInputStream();//HttpURLInputStream InputStreamResource resource = new InputStreamResource(inputStream); return ResponseEntity .ok() .contentType(MediaType.APPLICATION_OCTET_STREAM) .headers(httpHeaders) .body(resource);} catch (IOException e) { throw new SdsResourceFileNotFoundException( MessageFormat.format("Can not download resource recordCode [{0}] and uniqueCode [{1}]", recordCode, uniqueCode));}
阅读全文
1 0
- Spring Boot 微服务之间通过FeignClient进行大文件下载:
- spring boot 通过Eureka搭建微服务
- SpringCloud(第 012 篇)电影微服务接入 Feign 进行客户端负载均衡,通过 FeignClient 调用远程 Http 微服务
- Spring boot 微服务
- Spring Boot微服务框架
- 构建微服务 spring boot
- 微服务构建:Spring Boot
- Spring Cloud微服务 Spring Boot Admin
- spring boot spring cloud微服务架构
- Spring @FeignClient
- 【项目搭建】使用spring-boot进行REST风格的微服务开发入门
- spring Boot 微服务监控(Spring boot admin )
- spring boot admin + spring boot actuator + erueka 微服务监控
- 微服务--使用Spring Boot创建微服务
- 微服务--使用Spring Boot创建微服务
- 使用Spring Boot创建微服务
- 使用Spring Boot创建微服务
- maven+spring boot搭建简单微服务
- 【51nod】-1091 线段的重叠(贪心)
- Python set(集合) 这一定是最全的介绍集合的博文
- 2017下半年总结
- ztree在Vue2.5.2下面的运用实战
- 禁用不必要USB模式,如MassStorage,MTP,PTP等(上层)
- Spring Boot 微服务之间通过FeignClient进行大文件下载:
- Java核心技术-BaseDao
- angular 简单的增删查
- qt 使用QCamera 实现简单的摄像头使用
- 自己写的正则
- [上下界有源汇最小费用可行流] BZOJ 3876: [Ahoi2014&Jsoi2014]支线剧情
- 深入理解JQuery中$.get()、$.post()、$.getJSON()、$.ajax()方法
- QT控件大全 三十八 QWidgetKeyboard
- YCSB--HBase性能测试工具的安装和使用