Feign调用传输文件异常的解决


Posted in Java/Android onJune 24, 2021

1. Current request is not a multipart request

feign接口参数使用 @RequestPart 而非 @RequestParam, 同时需要指定consumes,比如这样:

@PostMapping(value = "/upload",consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
    Result<FileStorage> upload(@RequestPart(value = "file") MultipartFile file);

2. Feign failed and no fallback

这是hystrix导致,关闭feign熔断,或者延长熔断的超时时间,我简单粗暴的直接关了

3.Read timed out executing POST for “xxx”

配置了hystrix还不行,或者延长ribbon的超时时间,参考了Feign超时问题的办法,简单来说就是feign经过了ribbonn和hystrix两级调用,而且都有一个默认的超时时间,延长超时时间就好了

spring:
  servlet:
    context-path: /farm
  application:
    name: farm
  profiles:
    active: dev
  main:
    allow-bean-definition-overriding: true
eureka:
  client:
    service-url:
      defaultZone: http://127.0.0.1:7001/eureka
  instance:
    prefer-ip-address: true
#关闭feign熔断
feign:
  hystrix:
    enabled: false
#开启熔断,关闭熔断超时或延长调用超时时间
#hystrix:
#  command:
#    default:
#      execution:
#        timeout:
#          enabled: false
#        isolation:
#          thread:
#            timeoutInMilliseconds: 30000
#延长ribbon超时时间
ribbon:
  ReadTimeout: 30000
  ConnectTimeout: 30000

通过Feign上传文件(踩坑)

引入依赖:

<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>

服务提供者:

@RestController
@RequestMapping("/file")
public interface FileUploadService {
 
    @RequestMapping(value = "/uploadFile", method = RequestMethod.POST, consumes = MULTIPART_FORM_DATA_VALUE)
    CommonResult<String> uploadFile(@RequestPart("file") MultipartFile file,
                                    @RequestParam(value = "containerName", required = false) String containerName
}

具体实现不是重点……根据你的实际情况去完成……

服务调用者:

@RestController
@FeignClient(value = "XXXXXXXX", configuration = FileUploadServiceFeign.ClientConfiguration.class)
@RequestMapping("/file")
public interface FileUploadServiceFeign extends FileUploadService {
     
    /**
     * 配置类
     */
    class ClientConfiguration {
        /**
         * 此处注入的是: ObjectFactory<HttpMessageConverters>
         */
        @Autowired
        private ObjectFactory<HttpMessageConverters> messageConverters;
 
        @Bean
        public Encoder feignEncoder() {
            return new SpringFormEncoder(new SpringEncoder(messageConverters));
        }
    }
}

这样就行了……

需要注意的是:

在服务调用者那层的MultipartFile的value要跟服务提供者的@RequestPart中的value值一样。不然它会抛出400异常!!!

Feign调用传输文件异常的解决

成功案例:

Feign调用传输文件异常的解决

Feign调用传输文件异常的解决

以上为个人经验,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Java/Android 相关文章推荐
Spring Data JPA的Audit功能审计数据库的变更
Jun 26 Java/Android
dubbo集成zipkin获取Traceid的实现
Jul 26 Java/Android
logback 实现给变量指定默认值
Aug 30 Java/Android
Java实现给Word文件添加文字水印
Feb 15 Java/Android
JVM的类加载器和双亲委派模式你了解吗
Mar 13 Java/Android
Spring Boot 底层原理基础深度解析
Apr 03 Java/Android
Dubbo+zookeeper搭配分布式服务的过程详解
Apr 03 Java/Android
Java详细解析==和equals的区别
Apr 07 Java/Android
Android开发之WECHAT微信小程序路由跳转的两种形式
Apr 12 Java/Android
详细介绍Java中的CyclicBarrier
Apr 13 Java/Android
Spring IOC容器Bean的作用域及生命周期实例
May 30 Java/Android
SpringBoot使用ip2region获取地理位置信息的方法
Jun 21 Java/Android
springcloud之Feign超时问题的解决
Feign调用全局异常处理解决方案
总结一下关于在Java8中使用stream流踩过的一些坑
IDEA使用SpringAssistant插件创建SpringCloud项目
使用feign服务调用添加Header参数
详解Java实现数据结构之并查集
解决SpringCloud Feign传对象参数调用失败的问题
Jun 23 #Java/Android
You might like
Zerg建筑一览
2020/03/14 星际争霸
Laravel中为什么不使用blpop取队列详析
2018/08/01 PHP
基于php+MySql实现学生信息管理系统实例
2020/08/04 PHP
javascript奇异的arguments分析
2010/10/20 Javascript
JavaScript利用正则表达式去除日期中的-
2014/06/09 Javascript
基于dropdown.js实现的两款美观大气的二级导航菜单
2015/09/02 Javascript
JS+CSS实现另类带提示效果的竖向导航菜单
2015/10/15 Javascript
jquery trigger实现联动的方法
2016/02/29 Javascript
AngularJS基于ui-route实现深层路由的方法【路由嵌套】
2016/12/14 Javascript
浅谈javascript中的事件冒泡和事件捕获
2016/12/28 Javascript
微信小程序 实战程序简易新闻的制作
2017/01/09 Javascript
JS处理一些简单计算题
2018/02/24 Javascript
vue 项目中当访问路由不存在的时候默认访问404页面操作
2020/08/31 Javascript
[02:06]2018完美世界全国高校联赛秋季赛开始报名(附彩蛋)
2018/09/03 DOTA
[01:07:53]RNG vs VG 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
Python 爬虫的工具列表大全
2016/01/31 Python
Linux中安装Python的交互式解释器IPython的教程
2016/06/13 Python
简单实现python进度条脚本
2017/12/18 Python
Django跨域请求问题的解决方法示例
2018/06/16 Python
python实现对任意大小图片均匀切割的示例
2018/12/05 Python
用Pycharm实现鼠标滚轮控制字体大小的方法
2019/01/15 Python
Python3删除排序数组中重复项的方法分析
2019/01/31 Python
手把手教你Python yLab的绘制折线图的画法
2019/10/23 Python
德国奢侈品网上商城:Mytheresa
2016/08/24 全球购物
英国领先的名牌服装折扣零售商:Brown Bag Clothing
2019/01/08 全球购物
伊莱克斯阿根廷网上商店:Tienda Electrolux
2021/03/08 全球购物
美国艺术和工艺品商店:Hobby Lobby
2020/12/09 全球购物
linux面试题参考答案(5)
2016/11/05 面试题
Linux机考试题
2015/07/17 面试题
火车的故事教学反思
2014/02/11 职场文书
党员剖析材料范文
2014/12/18 职场文书
学习雷锋精神倡议书
2015/04/27 职场文书
新员工辞职信范文
2015/05/12 职场文书
地道战观后感400字
2015/06/04 职场文书
php 文件上传至OSS及删除远程阿里云OSS文件
2021/07/04 PHP
win10清理dns缓存
2022/04/19 数码科技