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 相关文章推荐
为什么在foreach循环中JAVA集合不能添加或删除元素
Jun 11 Java/Android
SpringBoot集成Redis,并自定义对象序列化操作
Jun 22 Java/Android
IDEA使用SpringAssistant插件创建SpringCloud项目
Jun 23 Java/Android
Maven学习----Maven安装与环境变量配置教程
Jun 29 Java/Android
解决MultipartFile.transferTo(dest) 报FileNotFoundExcep的问题
Jul 01 Java/Android
Java 泛型详解(超详细的java泛型方法解析)
Jul 02 Java/Android
java基础——多线程
Jul 03 Java/Android
Java后台生成图片的完整步骤
Aug 04 Java/Android
Java后端 Dubbo retries 超时重试机制的解决方案
Apr 14 Java/Android
java版 联机五子棋游戏
May 04 Java/Android
openGauss数据库JDBC环境连接配置的详细过程(Eclipse)
Jun 01 Java/Android
springcloud之Feign超时问题的解决
Feign调用全局异常处理解决方案
总结一下关于在Java8中使用stream流踩过的一些坑
IDEA使用SpringAssistant插件创建SpringCloud项目
使用feign服务调用添加Header参数
详解Java实现数据结构之并查集
解决SpringCloud Feign传对象参数调用失败的问题
Jun 23 #Java/Android
You might like
sourcesafe管理phpproj文件的补充说明(downmoon)
2009/04/11 PHP
php学习之 认清变量的作用范围
2010/01/26 PHP
Ext.data.PagingMemoryProxy分页一次性读取数据的实现代码
2010/04/07 PHP
php 面试碰到过的问题 在此做下记录
2011/06/09 PHP
PHP递归遍历指定目录的文件并统计文件数量的方法
2015/03/24 PHP
php写入、删除与复制文件的方法
2015/06/20 PHP
利用jQuery 实现GridView异步排序、分页的代码
2010/02/06 Javascript
分享一个自定义的console类 让你不再纠结JS中的调试代码的兼容
2012/04/20 Javascript
[JSF]使用DataModel处理表行事件的实例代码
2013/08/05 Javascript
jQuery对val和atrr(&quot;value&quot;)赋值的区别介绍
2014/09/26 Javascript
深入浅析NodeJs并发异步的回调处理
2015/12/21 NodeJs
Bootstrap编写导航栏和登陆框
2016/05/30 Javascript
JS for循环中i++ 和 ++i的区别介绍
2016/07/20 Javascript
js初始化验证实例详解
2016/11/26 Javascript
深入理解javascript的getTime()方法
2017/02/16 Javascript
vue数据双向绑定原理解析(get &amp; set)
2017/03/08 Javascript
xmlplus组件设计系列之列表(4)
2017/04/26 Javascript
简单的网页广告特效实例
2017/08/19 Javascript
20个最常见的jQuery面试问题及答案
2018/05/23 jQuery
koa socket即时通讯的示例代码
2018/09/07 Javascript
手把手教你如何使用nodejs编写cli命令行
2018/11/05 NodeJs
vue-cli 3.x配置跨域代理的实现方法
2019/04/12 Javascript
[40:13]Ti4 冒泡赛第二天 iG vs NEWBEE 2
2014/07/15 DOTA
[22:20]初生之犊-TI4第5名LGD战队纪录片
2014/08/13 DOTA
Django 使用Ajax进行前后台交互的示例讲解
2018/05/28 Python
提升Python程序性能的7个习惯
2019/04/14 Python
使用Django清空数据库并重新生成
2020/04/03 Python
Python3将ipa包中的文件按大小排序
2020/04/17 Python
CSS3中新增的对文本和字体的设置
2020/02/03 HTML / CSS
苏格兰销售女装、男装和童装的连锁店:M&Co
2018/03/16 全球购物
会议主持词
2014/03/17 职场文书
个人委托书范本
2014/04/02 职场文书
乳制品整治工作方案
2014/05/29 职场文书
12.4全国法制宣传日活动总结
2014/11/01 职场文书
社区重阳节活动总结
2015/03/24 职场文书
Python实战之疫苗研发情况可视化
2021/05/18 Python