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 相关文章推荐
Win10系统下配置Java环境变量
Jun 13 Java/Android
详解Java实践之抽象工厂模式
Jun 18 Java/Android
Java 数组内置函数toArray详解
Jun 28 Java/Android
Maven学习----Maven安装与环境变量配置教程
Jun 29 Java/Android
Java面试题冲刺第十九天--数据库(4)
Aug 07 Java/Android
JVM之方法返回地址详解
Feb 28 Java/Android
Java中API的使用方法详情
Apr 06 Java/Android
Java 使用类型为Object的变量指向任意类型的对象
Apr 13 Java/Android
Android开发手册TextInputLayout样式使用示例
Jun 10 Java/Android
SpringBoot使用ip2region获取地理位置信息的方法
Jun 21 Java/Android
springboot创建的web项目整合Quartz框架的项目实践
Jun 21 Java/Android
JDK8中String的intern()方法实例详细解读
Sep 23 Java/Android
springcloud之Feign超时问题的解决
Feign调用全局异常处理解决方案
总结一下关于在Java8中使用stream流踩过的一些坑
IDEA使用SpringAssistant插件创建SpringCloud项目
使用feign服务调用添加Header参数
详解Java实现数据结构之并查集
解决SpringCloud Feign传对象参数调用失败的问题
Jun 23 #Java/Android
You might like
php ctype函数中文翻译和示例
2014/03/21 PHP
ThinkPHP调用百度翻译类实现在线翻译
2014/06/26 PHP
PHP调试的强悍利器之PHPDBG
2016/02/22 PHP
PHP获取IP地址所在地信息的实例(使用纯真IP数据库qqwry.dat)
2016/11/15 PHP
PHP面向对象程序设计中的self、static、parent关键字用法分析
2019/08/14 PHP
jquery 使用简明教程
2014/03/05 Javascript
JS实现定时自动关闭DIV层提示框的方法
2015/05/11 Javascript
nodejs创建web服务器之hello world程序
2015/08/20 NodeJs
javascript省市级联功能实现方法实例详解
2015/10/20 Javascript
jquery 动态增加删除行的简单实例(推荐)
2016/10/12 Javascript
不使用script导入js文件的几种方法
2016/10/27 Javascript
jQuery插件autocomplete使用详解
2017/02/04 Javascript
如何用原生js写一个弹窗消息提醒插件
2019/05/24 Javascript
微信小程序自定义导航栏(模板化)
2019/11/15 Javascript
vue 使用async写数字动态加载效果案例
2020/07/18 Javascript
[53:15]Mineski vs iG 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
[01:13:18]Secret vs Infamous 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.23
2019/09/05 DOTA
Python open()文件处理使用介绍
2014/11/30 Python
Python pymongo模块用法示例
2018/03/31 Python
Django框架多表查询实例分析
2018/07/04 Python
解决pycharm py文件运行后停止按钮变成了灰色的问题
2018/11/29 Python
对Python生成汉字字库文字,以及转换为文字图片的实例详解
2019/01/29 Python
Python面向对象程序设计中类的定义、实例化、封装及私有变量/方法详解
2019/02/28 Python
Python中filter与lambda的结合使用详解
2019/12/24 Python
django之从html页面表单获取输入的数据实例
2020/03/16 Python
python根据用户需求输入想爬取的内容及页数爬取图片方法详解
2020/08/03 Python
anaconda3安装及jupyter环境配置全教程
2020/08/24 Python
Python 使用SFTP和FTP实现对服务器的文件下载功能
2020/12/17 Python
HTTP状态码详解
2021/03/18 杂记
效能监察建议书
2014/05/19 职场文书
给老师的保证书怎么写
2015/05/09 职场文书
《金钱的魔力》教学反思
2016/02/20 职场文书
《大禹治水》教学反思
2016/02/22 职场文书
员工工作心得体会
2019/05/07 职场文书
CSS实现隐藏搜索框功能(动画正反向序列)
2021/07/21 HTML / CSS
微软发布Windows 11今年最大更新22H2(附 ISO 镜像官方下载)
2022/09/23 数码科技