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 相关文章推荐
启动Tomcat时出现大量乱码的解决方法
Jun 21 Java/Android
springBoot基于webSocket实现扫码登录
Jun 22 Java/Android
基于Java的MathML转图片的方法(示例代码)
Jun 23 Java/Android
总结一下关于在Java8中使用stream流踩过的一些坑
Jun 24 Java/Android
Java Kafka 消费积压监控的示例代码
Jul 01 Java/Android
SpringCloud之@FeignClient()注解的使用方式
Sep 25 Java/Android
mybatis源码解读之executor包语句处理功能
Feb 15 Java/Android
JVM的类加载器和双亲委派模式你了解吗
Mar 13 Java/Android
Java练习之潜艇小游戏的实现
Mar 16 Java/Android
SpringBoot整合minio快速入门教程(代码示例)
Apr 03 Java/Android
springboot用户数据修改的详细实现
Apr 06 Java/Android
Android中View.post和Handler.post的关系
Jun 05 Java/Android
springcloud之Feign超时问题的解决
Feign调用全局异常处理解决方案
总结一下关于在Java8中使用stream流踩过的一些坑
IDEA使用SpringAssistant插件创建SpringCloud项目
使用feign服务调用添加Header参数
详解Java实现数据结构之并查集
解决SpringCloud Feign传对象参数调用失败的问题
Jun 23 #Java/Android
You might like
php打造属于自己的MVC框架
2012/03/07 PHP
初步介绍PHP扩展开发经验分享
2012/09/06 PHP
php常用Stream函数集介绍
2013/06/24 PHP
php时间戳转换的示例
2014/03/31 PHP
jQuery bind事件使用详解
2011/05/05 Javascript
JQuery中SetTimeOut传参问题探讨
2013/05/10 Javascript
了不起的node.js读书笔记之例程分析
2014/12/22 Javascript
JS动态增删表格行的方法
2016/03/03 Javascript
很棒的js Tab选项卡切换效果
2016/08/30 Javascript
JQuery遍历元素的后代和同胞实现方法
2016/09/18 Javascript
JS取模、取商及取整运算方法示例
2016/10/13 Javascript
Angular 2应用的8个主要构造块有哪些
2016/10/17 Javascript
ES6中的rest参数与扩展运算符详解
2017/07/18 Javascript
react native仿微信PopupWindow效果的实例代码
2017/08/07 Javascript
axios全局请求参数设置,请求及返回拦截器的方法
2018/03/05 Javascript
解决vue 路由变化页面数据不刷新的问题
2018/03/13 Javascript
JavaScript面试技巧之数组的一些不low操作
2019/03/22 Javascript
详释JavaScript执行环境与执行栈
2019/04/02 Javascript
小程序登录/注册页面设计的实现代码
2019/05/24 Javascript
解决layui表格的表头不滚动的问题
2019/09/04 Javascript
vue实现分页的三种效果
2020/06/23 Javascript
python使用Flask框架获取用户IP地址的方法
2015/03/21 Python
从CentOS安装完成到生成词云python的实例
2017/12/01 Python
Python模块的定义,模块的导入,__name__用法实例分析
2020/01/07 Python
pycharm 更改创建文件默认路径的操作
2020/02/15 Python
Python json转字典字符方法实例解析
2020/04/13 Python
Python基于Faker假数据构造库
2020/11/30 Python
python中的时区问题
2021/01/14 Python
澳大利亚制造的羊皮靴:Original UGG Boots
2017/11/13 全球购物
毕业生应聘幼儿园的自荐信
2013/11/20 职场文书
地质灾害防治方案
2014/05/14 职场文书
教师求职信怎么写
2015/03/20 职场文书
检察院起诉意见书
2015/05/20 职场文书
廉洁自律心得体会2016
2016/01/13 职场文书
Python 如何将integer转化为罗马数(3999以内)
2021/06/05 Python
苹果发布了MagSafe固件更新,可以不外接电源实现最高7.5W充电
2022/04/21 数码科技