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 相关文章推荐
详解java如何集成swagger组件
Jun 21 Java/Android
SpringBoot实现异步事件驱动的方法
Jun 28 Java/Android
解决ObjectMapper.convertValue() 遇到的一些问题
Jun 30 Java/Android
使用Springboot实现健身房管理系统
Jul 01 Java/Android
Java基础-封装和继承
Jul 02 Java/Android
java泛型通配符详解
Jul 25 Java/Android
Java 在生活中的 10 大应用
Nov 02 Java/Android
Java 超详细讲解设计模式之中的抽象工厂模式
Mar 25 Java/Android
零基础学java之带参数以及返回值的方法
Apr 10 Java/Android
Java工作中实用的代码优化技巧分享
Apr 21 Java/Android
Java使用HttpClient实现文件下载
Aug 14 Java/Android
springcloud之Feign超时问题的解决
Feign调用全局异常处理解决方案
总结一下关于在Java8中使用stream流踩过的一些坑
IDEA使用SpringAssistant插件创建SpringCloud项目
使用feign服务调用添加Header参数
详解Java实现数据结构之并查集
解决SpringCloud Feign传对象参数调用失败的问题
Jun 23 #Java/Android
You might like
日本十大最佳动漫,全都是二次元的神级作品
2019/10/05 日漫
php 购物车的例子
2009/05/04 PHP
PHP获取一年中每个星期的开始和结束日期的方法
2015/02/12 PHP
PHP版QQ互联OAuth示例代码分享
2015/07/05 PHP
根据key删除数组中指定的元素实现方法
2017/03/02 PHP
Laravel 集成微信用户登录和绑定的实现
2019/12/27 PHP
浅谈javascript面向对象程序设计
2015/01/21 Javascript
javascript 中的try catch应用总结
2017/04/01 Javascript
浅谈vue.js中v-for循环渲染
2017/07/26 Javascript
判断div滑动到底部的scroll实例代码
2017/11/15 Javascript
JS求Number类型数组中最大元素方法
2018/04/08 Javascript
如何解决webpack-dev-server代理常切换问题
2019/01/09 Javascript
tracking.js实现前端人脸识别功能
2020/04/16 Javascript
JS求解两数之和算法详解
2020/04/28 Javascript
Vue使用axios引起的后台session不同操作
2020/08/14 Javascript
[10:54]Team Spirit vs Navi
2018/06/07 DOTA
Python可变参数函数用法实例
2015/07/07 Python
分享一个可以生成各种进制格式IP的小工具实例代码
2017/07/28 Python
Python排序搜索基本算法之选择排序实例分析
2017/12/09 Python
Python安装模块的常见问题及解决方法
2018/02/05 Python
实例讲解Python脚本成为Windows中运行的exe文件
2019/01/24 Python
python 阶乘累加和的实例
2019/02/01 Python
Python利用itchat库向好友或者公众号发消息的实例
2019/02/21 Python
Python文件操作函数用法实例详解
2019/12/24 Python
如何用python 操作zookeeper
2020/12/28 Python
美国诺德斯特龙百货官网:Nordstrom
2016/08/23 全球购物
Stührling手表官方网站:男女高品质时尚手表的领先零售商
2021/01/07 全球购物
如何利用cmp命令比较文件
2016/04/11 面试题
医院实习接收函
2014/01/12 职场文书
小学生学习感言
2014/03/10 职场文书
《长城和运河》教学反思
2014/04/14 职场文书
餐饮服务食品安全责任书
2014/07/25 职场文书
大学生第一学年自我鉴定
2014/09/12 职场文书
维稳工作承诺书
2015/01/20 职场文书
环保主题班会教案
2015/08/13 职场文书
婚礼男方父母答谢词
2015/09/29 职场文书