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 Cache和EhCache实现缓存管理方式
Jun 15 Java/Android
深入理解以DEBUG方式线程的底层运行原理
Jun 21 Java/Android
java实现对Hadoop的操作
Jul 01 Java/Android
Spring实现内置监听器
Jul 09 Java/Android
Java使用jmeter进行压力测试
Jul 09 Java/Android
一篇文章带你学习Mybatis-Plus(新手入门)
Aug 02 Java/Android
SpringMVC 整合SSM框架详解
Aug 30 Java/Android
mapstruct的用法之qualifiedByName示例详解
Apr 06 Java/Android
Java线程的6种状态与生命周期
May 11 Java/Android
Spring Security动态权限的实现方法详解
Jun 16 Java/Android
SpringBoot使用AOP实现统计全局接口访问次数详解
Jun 16 Java/Android
Android实现图片九宫格
Jun 28 Java/Android
springcloud之Feign超时问题的解决
Feign调用全局异常处理解决方案
总结一下关于在Java8中使用stream流踩过的一些坑
IDEA使用SpringAssistant插件创建SpringCloud项目
使用feign服务调用添加Header参数
详解Java实现数据结构之并查集
解决SpringCloud Feign传对象参数调用失败的问题
Jun 23 #Java/Android
You might like
PHP Zip解压 文件在线解压缩的函数代码
2010/05/26 PHP
thinkphp3.x中display方法及show方法的用法实例
2016/05/19 PHP
php封装的图片(缩略图)处理类完整实例
2016/10/19 PHP
javascript各种复制代码收集
2008/09/20 Javascript
JQuery 获得绝对,相对位置的坐标方法
2010/02/09 Javascript
Js组件的一些写法
2010/09/10 Javascript
可以用鼠标拖动的DIV实现思路及代码
2013/10/21 Javascript
JS显示下拉列表框内全部元素的方法
2015/03/31 Javascript
angular route中使用resolve在uglify压缩后问题解决
2016/09/21 Javascript
ES6中的迭代器、Generator函数及Generator函数的异步操作方法
2019/05/12 Javascript
vuex中store存储store.commit和store.dispatch的用法
2020/07/24 Javascript
[04:04]显微镜下的DOTA2第六期——电影级别的华丽团战
2014/06/20 DOTA
Python random模块常用方法
2014/11/03 Python
详尽讲述用Python的Django框架测试驱动开发的教程
2015/04/22 Python
Python用户推荐系统曼哈顿算法实现完整代码
2017/12/01 Python
用Python进行简单图像识别(验证码)
2018/01/19 Python
Django + Uwsgi + Nginx 实现生产环境部署的方法
2018/06/20 Python
python 列表降维的实例讲解
2018/06/28 Python
python实现周期方波信号频谱图
2018/07/21 Python
Python3爬虫之自动查询天气并实现语音播报
2019/02/21 Python
Python学习笔记基本数据结构之序列类型list tuple range用法分析
2019/06/08 Python
python简单区块链模拟详解
2019/07/03 Python
python 环境搭建 及python-3.4.4的下载和安装过程
2019/07/20 Python
django项目环境搭建及在虚拟机本地创建django项目的教程
2019/08/02 Python
Numpy 中的矩阵求逆实例
2019/08/26 Python
在Python中使用MongoEngine操作数据库教程实例
2019/12/03 Python
PyQt5 如何让界面和逻辑分离的方法
2020/03/24 Python
基于Python下载网络图片方法汇总代码实例
2020/06/24 Python
python文件及目录操作代码汇总
2020/07/08 Python
LEGO玩具英国官方商店:LEGO Shop GB
2018/03/27 全球购物
老板电器官方购物商城:老板油烟机、燃气灶、消毒柜、电烤箱
2018/05/30 全球购物
Shopbop中文官网:美国亚马逊旗下时尚购物网站
2020/12/15 全球购物
品酒会策划方案
2014/05/26 职场文书
初中生毕业评语
2014/12/29 职场文书
2015中学学校工作总结
2015/07/20 职场文书
餐厅如何利用“营销策略”扭转亏本局面
2019/10/15 职场文书